使用hibernate过滤非基本类型

问题描述 投票:1回答:2

在我的数据库中,我不删除对象。而是进行软删除。表示将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();
} 
java hibernate soft-delete
2个回答
0
投票

Hibernate过滤器不适用于@OneToOne关系。

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

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.