首页 > 解决方案 > 如何在 Hibernate 中为 CRUD 操作自定义通用持久性生命周期

问题描述

我需要自定义 hibernate 的 CRUD 操作来执行一些额外的操作。我的问题是,我无权更改实体实现,我需要为这些实体保留额外的元数据。例如:

@Entity
class Entity1 {

    @Id
    private Long id;

    private String attr1;

}

@Entity
class Entity2 {

    @Id
    private Long id;

    private String attr1;

    private String attr2;
}

Entity1并且Entity2保存在他们自己的表中,这很好,但我需要保存一个元数据信息,比如说forced = [true|false],描述给定String属性是否被强制。此信息将应用于整个系统,这意味着,对于所有具有String属性的实体,应该可以识别它们的字符串属性是否被强制。

就我而言,我可以确定哪些实例和属性在运行时被强制或没有被强制,如果我必须实现一些回调监听器或拦截器,这些信息很容易获得。我的想法是将这些元数据信息保存在一个单独的表中,比如说FORCED_ATTRIBUTES,该表具有三列(两列用于标识实体和属性已更改,另一列用于定义值是否已更改)。

是否可以在不更改这些实体(Entity1Entity2)的情况下获得这样的功能?

标签: javahibernatejpa

解决方案


推荐阅读