0
DB에서 완벽하게 유지되는 DB4O를 사용하여 다음 엔티티를 유지해야합니다.DB4O 쿼리 문제
public class Message {
private String userFrom;
private String userTo;
private String message;
private Date received;
private Boolean readed;
...
}
하나의 쿼리를 통해 지속 된 개체를 복구하는 동안 문제가 발생했습니다.
SQL을 사용하면 이와 같이 나타납니다.
SELECT * FROM Message WHERE readed = 0
AND ((userFrom = 'asd' AND userTo = 'qwe') OR (userFrom = 'qwe' AND userTo = 'asd'))
ORDER BY received DESC
현재 잘못된 DB4O 쿼리는 다음과 같을 수 있습니다.
Query query = super.getQuery();
query.constrain(Message.class);
Query readedQuery = query.descend("readed");
Query receivedQuery = query.descend("received");
Query userToQuery = query.descend("userTo");
Query userFromQuery = query.descend("userFrom");
receivedQuery.orderDescending()
.constrain(readedQuery.constrain(Boolean.FALSE))
.and(userToQuery.constrain("asd")
.and(userFromQuery.constrain("qwe"))
.or(userToQuery.constrain("qwe")
.and(userFromQuery.constrain("asd"))));
return query.execute();