使用hibernate过滤非基本类型

时间:2012-08-22 14:11:31

标签: java hibernate soft-delete

在我的数据库中,我不删除对象。而是进行软删除。表示将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();
} 

2 个答案:

答案 0 :(得分:0)

Hibernate过滤器无法处理@OneToOne关系。

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

解释是对问题的评论:过滤器会改变关系的基数。

答案 1 :(得分:0)

如果布尔标志不起作用,您可以使用整数值。并可以相应地检查。