首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以为Hibernate指定一个不使用HBMXML文件的软删除筛选器?

是否可以为Hibernate指定一个不使用HBMXML文件的软删除筛选器?
EN

Stack Overflow用户
提问于 2013-10-15 17:07:26
回答 2查看 2.3K关注 0票数 3

我试图让“软删除”像这个博客条目那样工作(这涉及到允许OrmSettings.SaveMapping为每个实体输出HBMXML文件,然后手动向该文件添加一个过滤器)。

如果我遵循这些指令,它可以工作,但这基本上是将所有模型的CFCs复制到HBMXML文件中,这既污染了文件系统,又造成了维护开销。

是否有一种方法可以在CFML内创建过滤器(或修改HBMXML文件)?即而不需要生成HBMXML文件?

(注意:在cfproperty上使用where属性可以处理一对多的关系,但对于那些试图在联接表上而不是对另一个实体进行筛选的关系,则不适用于多到多的关系。)

EN

回答 2

Stack Overflow用户

发布于 2013-10-15 17:50:35

您是否可以考虑避免软删除,而使用Hibernates Envers来维护单独表中已删除实体的记录?这样就避免了确保每个查询和集合都考虑到删除条件的麻烦。

http://docs.jboss.org/envers/docs/

如果您只对审计删除感兴趣,那么只注册所需的侦听器,并确保您已经将org.hibernate.envers.store_data_at_delete设置为true。如果您只保留用于审计目的,这是一个很好的解决方案。

此外,我不认为所提到的解决办法将级联删除。然而Hibernate允许您修改任何操作的SQL :重写SQLDelete操作(带有注释,例如@SQLDelete(SQLDelete=1.))在实体上。然后删除将层叠起来。

http://docs.jboss.org/hibernate/orm/4.1/devguide/en-US/html/ch13.html#querysql-cud

票数 1
EN

Stack Overflow用户

发布于 2013-10-16 03:57:41

我通常使用一个' base‘服务对象来处理ORM对象的所有CRUD,对于每个ORM对象,我都扩展了这个基础。对于需要“软删除”的项,我只需重写服务的delete()方法来设置属性(通常称为“删除”为真),然后保存实体。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19386983

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档