我有一个项目最近OpenJPA
从Hibernate
. 在替换特定于 的配置部分时OpenJPA
,我遇到了一个无法在其中复制的功能Hibernate
。
在OpenJPA
中,我们通过注释实体@Strategy
并提供org.apache.openjpa.jdbc.meta.strats.AbstractStrategy
. 在该customDelete
方法中,我们调用单个共享存储过程并传递表名、实体 ID 和执行操作的用户 ID,此过程将删除实体并创建审计日志条目。
在Hibernate
中,我可以找到许多可用的钩子,但似乎没有一个提供相同的功能。我看过以下内容:
@SQLDelete("customer delete query") - 此选项仅允许您访问 id,而不是表名或用户 id,因此每个类都是自定义的,但仍然缺少信息
EntityListener 类 - 此选项告诉您删除的实体,但需要挖掘以获取实际涉及的表,并且超出单个数据库操作的范围
是否有任何其他选项更接近 OpenJPA 方法,或者我最好的选择是使用一个EntityLister
类并自己做繁重的工作来确定表名?