Morphia等于无视领域

时间:2014-04-22 08:32:12

标签: java mongodb morphia

我有一个课程如下:

@Entity 
public class Wrap{
    private Metadata meta;
    // And more ...
}
public class Metadata{
    private List<Image> images;
    private String price;
    private Integer value;
    // And more ...
}
public class Image  {
    private String url;
    private String hash;
    @Override
    public int hashCode() {
        int h = 7;
        h = 89 * h + Objects.hashCode(this.hash);
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final Image other = (Image) obj;
        return (!Objects.equals(this.hash, other.hash));
    }
}

普通查询ds.createQuery(Wrap.class).field("meta").equal(otherMetadata);将比较所有字段(如预期的那样)。

正如您在代码中看到的那样,Image类会覆盖equals&amp; hashcode以忽略字段url。这适用于Java。但是morphia有一种方法可以查询(使用.equal或.filter或其他任何东西)忽略某些字段吗?

1 个答案:

答案 0 :(得分:0)

equal()是MongoDB中的一个比较。 equals()是Java中的比较。两者没有互动。

您需要使用.field("meta.price").equal(meta.getPrice())等来组合更复杂的数据库查询。