我试图让“软删除”像这个博客条目那样工作(这涉及到允许OrmSettings.SaveMapping为每个实体输出HBMXML文件,然后手动向该文件添加一个过滤器)。
如果我遵循这些指令,它可以工作,但这基本上是将所有模型的CFCs复制到HBMXML文件中,这既污染了文件系统,又造成了维护开销。
是否有一种方法可以在CFML内创建过滤器(或修改HBMXML文件)?即而不需要生成HBMXML文件?。
(注意:在cfproperty上使用where属性可以处理一对多的关系,但对于那些试图在联接表上而不是对另一个实体进行筛选的关系,则不适用于多到多的关系。)
发布于 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
发布于 2013-10-16 03:57:41
我通常使用一个' base‘服务对象来处理ORM对象的所有CRUD,对于每个ORM对象,我都扩展了这个基础。对于需要“软删除”的项,我只需重写服务的delete()方法来设置属性(通常称为“删除”为真),然后保存实体。
https://stackoverflow.com/questions/19386983
复制相似问题