我正在尝试实现一个Soft-deletable存储库.通常,使用Delete Event侦听器可以轻松完成此操作.要过滤掉已删除的实体,我可以将Where属性添加到我的类映射中.但是,我还需要在此实体的存储库中实现另外两个方法:还原和清除.恢复将"取消删除"实体,清除将硬删除它们.这意味着我不能使用Where属性(因为它阻止了软删除的实体到任何访问)
我尝试使用过滤器.我可以创建一个过滤器并在会话中启用或禁用它以获得相同的结果.但问题是过滤器对Session.Get方法没有任何影响(它们只影响基于ICriteria的访问).
关于如何解决这个问题的任何想法?
谢谢
引用法比奥·毛洛的话:
根据设计。过滤器不能与 Get 或 Load 一起使用,因为它们的意思是:我想使用此 ID 加载实体。
仅当您使用显式联接时,或者更一般地说,当过滤器的 QuerySpace 与查询的 QuerySpace 匹配时,动态过滤器才可与 HQL/Criteria 和 Collection(在为集合启用的情况下)配合使用。