用于querybyexample查询的db4o原型

时间:2016-04-11 21:15:39

标签: prototype db4o

我在Java项目中使用db4o。我想创建一个原型来使用querybyexample获取所有未结婚的人。 Person类有三个属性:name(String),age(int)和married(boolean),所以我创建了以下原型:

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

我得到所有存放在DB中的人,包括已婚和未婚,而不是没有结婚的人。我可以使用querybyexample获取未婚人员,还是应该使用本机查询?

1 个答案:

答案 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);