Подтвердить что ты не робот

Игнорировать Hibernate @Where аннотация

У меня есть Entity, который имеет ассоциацию с другим Entity, аннотированным с помощью @Where, например

public class EntityA {

    @OneToMany
    @Where(...)
    private List<EntityB> entityBList;

}

В последнее время произошло неизбежное, мне нужно загрузить EntityB, который не соответствует предложению @Where. Я мог бы удалить @Where аннотацию, но она используется много, поэтому я в идеале не хочу этого делать. Помимо загрузки списка EntityB вручную, с другим запросом, каковы мои варианты? Могу ли я сообщить Hibernate игнорировать @Where аннотацию?

4b9b3361

Ответ 1

После многих исследований выяснилось, что это просто невозможно. Я настоятельно рекомендую избегать @Where, так как трудно предсказать заранее, если вам когда-либо понадобится эти ассоциации или нет.

Ответ 2

Я знаю его старый вопрос, но в случае, если кто-то ищет ответ...
У меня была та же дилемма, вы не хотите, чтобы ваш код был" is_deleted = false" каждый раз, когда вы выбираете,

простое решение - использовать собственный SQL:

lst = sessionFactory.getCurrentSession().
createSQLQuery("select {entb.*}  from EntityB entb where  is_deleted=1")                            
           .addEntity("entb", EntityB.class)
           .list();

Ответ 3

Вы можете сопоставить другое свойство с такими же данными, как это:

public class EntityA {

    @OneToMany
    @JoinColumn(name='theColumnName', insertable=false, updateable=false)
    private List<EntityB> entityBListReadOnly;

}

Важно установить как обновляемое значение false и вставить falso, чтобы избежать проблем согласованности в ваших данных!