2012-08-22 4 views
1

В моей базе данных Я не удаляю объекты. Вместо этого выполняется мягкое удаление. Значит, флаг delted установлен в true. Это нужно отфильтровать с помощью гибернации, используя аннотацию @Filter. Это работает, но у меня есть проблема, что поля не фильтруются.Фильтрация непримитивных типов с hibernate

Например, у меня есть дочерний класс и родительский класс, который содержит дочерний элемент. Если дочерний элемент удаляется и родитель загружается, родительский объект содержит дочерний объект (хотя удаленный флаг установлен правильно). Но я хочу, чтобы дочерний объект был отфильтрован, как будто он работает с коллекциями. Есть ли способ сделать это?

Я пробовал обрабатывать поле, как сбор, но это не сработало для меня.

@Entity 
@FilterDef(name = deletedFilter, parameters = @ParamDef(name = deletedParam, type = "boolean")) 
@Filter(name = deletedFilter, condition = ":deletedParam = deleted") 
public class Child {} 


@Entity 
public class Parent { 
    @OneToOne 
    @Filter(name = deletedFilter, condition = ":deletedParam = deleted") 
    private Child child = new Child(); 
} 
+0

Разве у вас нет '@ OneToMany' в коллекции? – dcernahoschi

+0

Да, вы правы. Я изменю его :-) Но так как в моем коде это правильно, это не меняет поведения. – Bernhard

ответ

0

Hibernate фильтры не работают на @OneToOne отношений.

https://hibernate.onjira.com/browse/HHH-4026

Объяснение на комментарии к этому вопросу: фильтры изменит мощность отношения.

+0

ОК спасибо за ответ. Тогда я должен найти другое решение. – Bernhard

0

Если флагов boolean не работает, вы можете использовать значение Integer. И может проверить соответственно.

Смежные вопросы