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

是否可以在不使用HBMXML文件的情况下为Hibernate指定软删除筛选器?,hibernate,orm,coldfusion,cfml,hibernate-filters,Hibernate,Orm,Coldfusion,Cfml,Hibernate Filters,我正在尝试让“软删除”工作,如(包括启用或msettings.SaveMapping为每个实体输出HBMXML文件,然后手动向该文件添加过滤器) 如果我按照这些说明操作,它会工作,但这基本上是将所有模型CFC复制到HBMXML文件中,这既污染了文件系统,又造成了维护开销 是否有办法从CFML中创建过滤器(或修改HBMXML文件),即不生成HBMXML文件? (注意:在cfproperty上使用where属性适用于一对多关系,但不适用于多对多关系-适用于它尝试在联接表而不是其他实体上过滤的关系。)

我正在尝试让“软删除”工作,如(包括启用
或msettings.SaveMapping
为每个实体输出HBMXML文件,然后手动向该文件添加过滤器)

如果我按照这些说明操作,它会工作,但这基本上是将所有模型CFC复制到HBMXML文件中,这既污染了文件系统,又造成了维护开销

是否有办法从CFML中创建过滤器(或修改HBMXML文件),即不生成HBMXML文件?


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

< p>是否可以考虑避免软删除和使用休眠符Enver,而不是在单独的表中维护删除的实体的记录?这样就避免了确保每个查询和集合记住考虑已删除条件的麻烦

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

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


我通常使用“基本”服务对象来处理ORM对象的所有CRUD,对于每个ORM对象,我扩展该基础。对于需要“软删除”的项目,我只需覆盖服务的
delete()
方法来设置属性(通常称为“deleted”为true)然后保存实体。

谢谢,我们将研究Envers-我认为可以使用单独的表,但需要检查它是否可以与CF一起使用。我们已经做到了这一点-使用ColdBox并让所有服务对象扩展定制版本的VirtualEntityService,该服务在直接处理时有效,但在执行
SomeObjec时无效tService.get(1.getRelations()
或HQL-filtering确实可以处理这些问题,但当然似乎需要HBMXML文件。