условия автоматического присоединения к спящему режиму
-
06-09-2019 - |
Вопрос
Класс персистентности спящего режима:@Entity public class a {
@OneToMany(mappedBy = "a")
private Set<B> bSet = new HashSet<B>();
@Basic
private boolean DELETED;
}
Класс B также имеет свойство DELETED.Как мы можем автоматически обрабатывать свойство DELETED во время соединения, чтобы выбирать только не удаленные объекты.Возможно, с помощью некоторых аннотаций.Возможно?
Решение 2
Большое спасибо!это мое решение:
@Entity
public class A extends DeletableEntity{
@OneToMany(mappedBy = "a")
@Where(clause = "DELETED=0 or DELETED is null")
private Set<B> bSet = new HashSet<B>();
public Set<B> getBSet() {
return bSet;
}
public void setBSet(Set<B> bSet) {
this.bSet = bSet;
}
}
и HQL «выберите a.DELETED from A a join a.bSet bSet» будет генерировать собственный SQL следующим образом:
выберите a0_.DELETED как col_0_0_ из A a0_ внутреннего соединения B bset1_ на a0_.id=bset1_.a_id и ( bset1_.DELETED=0 или bset1_.DELETED имеет значение null)
иentityManager.find(...) будет работать правильно :)
Другие советы
В соответствии с Документация по спящему режиму вам следует использовать ResultTransformer (ALIAS_TO_ENTITY_MAP).