我有一个课程如下:
@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或其他任何东西)忽略某些字段吗?
答案 0 :(得分:0)
equal()
是MongoDB中的一个比较。 equals()
是Java中的比较。两者没有互动。
您需要使用.field("meta.price").equal(meta.getPrice())
等来组合更复杂的数据库查询。