2016-04-11 34 views
0

Я использую db4o в проекте Java. Я хочу создать прототип, чтобы получить всех лиц, не состоящих в браке, с помощью querybyexample. Класс Person имеет три атрибута: имя (строка), возраст (целое) и женился (булевы), поэтому я создаю следующий прототип:db4o prototype для запроса queryexample

Person prototypePerson = new Person(null, 0, false); 

Вместо того, чтобы не женатых людей, я получаю все лица, хранятся в БД, оба женатые и не состоящие в браке. Могу ли я получить незамужних людей, использующих querybyexample, или я должен использовать собственные запросы?

ответ

0

В основном запрос на примере проверяет только те поля, которые не имеют значения по умолчанию в качестве параметра запроса. Для boolean значение «false» является значением по умолчанию, поэтому в вашем примере оно будет пропущено.

Вы можете рассмотреть возможность использования перечисления. Измените поле на это перечисление. Как:

enum MaritalStatus{ 
    MARRIED, 
    SINGLE 
} 

class Person{ 

    private String name; 
    private MaritalStatus status; 

    public Person(String name, MaritalStatus status){ 
     this.status = status; 
     this.name = name; 
    } 

    // more 
} 

Это делает ваш код более ясным, что это значит, и более расширяемый (например, добавление вдовами статуса) и он должен работать с запросом на примере. Запрос будет выглядеть так:

Лицо prototypePerson = new Person (null, 0, FamilyStatus.SINGLE);

Смежные вопросы