我在Java项目中使用db4o。我想创建一个原型来使用querybyexample获取所有未结婚的人。 Person类有三个属性:name(String),age(int)和married(boolean),所以我创建了以下原型:
Person prototypePerson = new Person(null, 0, false);
我得到所有存放在DB中的人,包括已婚和未婚,而不是没有结婚的人。我可以使用querybyexample获取未婚人员,还是应该使用本机查询?
答案 0 :(得分:0)
基本上,按示例查询仅检查没有默认值的字段作为查询参数。对于布尔值,' 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
}
这使您的代码更加明确它的含义,并且更具可扩展性(如将Widowed添加为状态),它应该可以通过示例查询。查询将是:
Person prototypePerson = new Person(null,0,MaritalStatus.SINGLE);