В моей базе данных Я не удаляю объекты. Вместо этого выполняется мягкое удаление. Значит, флаг 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();
}
Разве у вас нет '@ OneToMany' в коллекции? – dcernahoschi
Да, вы правы. Я изменю его :-) Но так как в моем коде это правильно, это не меняет поведения. – Bernhard