условия автоматического объединения в спящий режим - PullRequest
0 голосов
/ 01 июня 2009

Hibernate персистентный класс: @Сущность общественный класс А {

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

    @Basic
    private boolean DELETED;

}

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

Ответы [ 2 ]

2 голосов
/ 01 июня 2009

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

1 голос
/ 01 июня 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 из A a a.bSet bSet" будут генерировать собственный SQL следующим образом:

выберите a0_.DELETED как col_0_0_ из A a0_ внутреннего соединения B bset1_ для a0_.id = bset1_.a_id и (bset1_.DELETED = 0 или bset1_.DELETED равно нулю)

и entityManager.find (...) будет работать правильно:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...