java - 使用 hibernate 过滤非原始类型

标签 java hibernate soft-delete

在我的数据库中,我不删除对象。相反,会进行软删除。表示 delted 标志设置为 true。这应该由 hibernate 使用 @Filter 注释进行过滤。 这可行,但我遇到字段未过滤的问题。

例如,我有一个子类和一个包含子类的父类。如果子对象被删除并且父对象被加载,则父对象包含子对象(尽管已正确设置删除标志)。但我希望子对象能够像处理集合一样被过滤。 有什么办法可以做到这一点吗?

我尝试将这个领域视为 Collection ,但这对我不起作用。

@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();
} 

最佳答案

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

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

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

关于java - 使用 hibernate 过滤非原始类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12075054/

相关文章:

java - 线程和可变参数

java - Log4j2 ConsoleAppender 不应用 PatternLayout

java - HQL(hibernate) 时间戳范围匹配

c# - 如何禁止从 Entity Framework 6 IDbCommandTreeInterceptor 执行?

java - 删除文件后更新 View 适配器

java - 如何为扩展 JDialog 的类(或通常另一个类)创建接口(interface)

java - hibernate使用其他类ID作为这个类ID

java - 为什么我的 (spring)HibernateTransactionManager 不能在 wicket 中工作?

mysql - 使用电子邮件创建新用户作为软删除用户

php - Symfony2 SoftDeleteable 不适用于 QueryBuilder Delete