У меня есть класс следующим образом:
@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&hashcode, чтобы игнорировать поле url. Это работает для Java. Но есть ли способ в morphia запрашивать (используя .equal или .filter или что-то еще), игнорируя некоторые поля?