условия автоматического присоединения к спящему режиму

Класс сохраняемости Hibernate: открытый класс @Entity A {

    @OneToMany(mappedBy = "a")
    private Set<B> bSet = new HashSet<B>();

    @Basic
    private boolean DELETED;

}

Класс B также имеет свойство DELETED. Как мы можем автоматически обрабатывать свойство DELETED во время соединения, чтобы выбирать только не удаленные объекты. Может быть с помощью некоторых аннотаций. Возможно?


person Max    schedule 01.06.2009    source источник


Ответы (2)


В соответствии с документацией по Hibernate вы должны используйте ResultTransformer (ALIAS_TO_ENTITY_MAP).

person Tadeusz Kopec    schedule 01.06.2009

Большое спасибо! это моя решимость:

@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(...) будет работать правильно :)

person Max    schedule 01.06.2009