java – Hibernate:如何只获取非逻辑删除的对象
发布时间:2020-12-14 05:38:38 所属栏目:Java 来源:网络整理
导读:几乎我们数据库中的每个表都有一个FK到审计表,它记录了创建,更新和删除的状态(日期和用户名). 我们将审计表映射到Auditing类并使用它如下: @MappedSuperclasspublic class BusinessObject extends DataObject { private static final long serialVersionUID
几乎我们数据库中的每个表都有一个FK到审计表,它记录了创建,更新和删除的状态(日期和用户名).
我们将审计表映射到Auditing类并使用它如下: @MappedSuperclass public class BusinessObject extends DataObject { private static final long serialVersionUID = -1147811010395941150L; @OneToOne(fetch = FetchType.EAGER,cascade = { CascadeType.ALL }) @JoinColumn(name = "AUD_ID") private AuditingObject auditing; ... 正如您所期望的那样,几乎每个实体都从BusinessObject扩展而来. 有一种简单的方法可以说,对于每个businessObject,只接收“auditing.deleted为null”. 我已经尝试在businessObject中添加@Where和@WhereJoinTable,但这似乎不像我期望的那样工作. 目前,我已经对我的一个查询做了这个工作,但我讨厌为所有查询执行此操作,因为我们有大约150个查询. @NamedQuery( name="allCountries",query="SELECT c FROM Country c" + " LEFT JOIN FETCH c.labelDefinition " + " LEFT JOIN FETCH c.labelDefinition.translations " + " WHERE c.auditing.deleted is null" + " ORDER BY c.code" ) 解决方法
IMO,实现软删除的最简单方法是在您的实体中添加标志并使用:
> 但不确定这如何适合您的审核表.需要进行一些进一步的探索和测试. 资源 > Soft deletes using Hibernate annotations (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 【UDP通过多线程改进,在一个窗口中同时接收又发送】
- 支持快速删除任何节点的Java链表?
- java – 方法getBuild()未定义类型MvcUriComponentsBuilder
- Nashorn——在JDK 8中融合Java与JavaScript之力--转
- 使用POI和Java反射机制导出数据到excel中
- JAVA HEAP SPACE解决方法和JVM参数设置
- java – 在hadoop中启动namenode失败?
- java – file.createNewFile()IOException“没有这样的文件
- java – (简单)DateFormat,允许24:00:00和00:00:00作为输入
- java中getter setter的空指针异常