hibernate - 是否可以在不使用 HBMXML 文件的情况下为 Hibernate 指定软删除过滤器?

标签 hibernate orm coldfusion cfml hibernate-filters

根据 this blog entry,我正在尝试让“软删除”工作,(这涉及启用 OrmSettings.SaveMapping 以输出每个实体的 HBMXML 文件,然后手动向该文件添加过滤器)。

如果我按照这些说明进行操作,它会起作用,但这基本上是将所有模型 CFC 复制到 HBMXML 文件中,这会污染文件系统并产生维护开销。

有没有办法从 CFML 中创建过滤器(或修改 HBMXML 文件)- 即生成 HBMXML 文件?

(注意:在 cfproperty 上使用 where 属性适用于一对多关系,但不适用于多对多 关系 - 对于那些它尝试在连接表而不是其他实体上进行过滤的关系。)

最佳答案

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

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

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

我也不认为提到的解决方案会级联删除。然而,Hibernate 允许您为任何操作修改 SQL:覆盖实体上的 SQL 删除操作(使用注释完成,例如 @SQLDelete(set deleted = 1 ....)。删除将级联。

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

关于hibernate - 是否可以在不使用 HBMXML 文件的情况下为 Hibernate 指定软删除过滤器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19386983/

相关文章:

coldfusion - 如何在不覆盖父函数的情况下扩展 application.cfc?

hibernate - ColdFusion ORM 和默认构造函数(init 方法)

java - Railo Java 打印

java - JPA/hibernate : call stored procedure with input and output parameters

java - hibernate + Spring 应用程序。在使用数据库之前添加逻辑

java - 保留 TEXT 数据类型时出现 Hibernate 错误

php - Kohana ORM 和验证,有问题

Laravel 为 hasOne 关系分离

java - 将 hibernate orm 实体转换为复杂对象,反之亦然

java - 使用复合备用键映射多对一关系