java - 如何在 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
,该表具有三列(两列用于标识实体和属性已更改,另一列用于定义值是否已更改)。
是否可以在不更改这些实体(Entity1
和Entity2
)的情况下获得这样的功能?
解决方案
推荐阅读
- java - 用于模拟 Java 的 LocalDate.fromEpochDay() 的 MySQL 函数
- xml - XSLT1.0:替换 XML 中属性出现的子环值
- node.js - JWT 功能在本地有效,但在 heroku 上无效
- elasticsearch - 弹性:没有可用于此声明的持久卷,也没有设置存储类
- python - 导入脚本并使用 APScheduler 和 Python 运行它
- android - 如何在颤动中使用 RepaintBoundary 将整个小部件变成图像
- android-workmanager - 单击按钮时,正在运行的工作管理器服务如何取消?
- python - 按列中的最大数量过滤
- excel - 带有偏移的 VBA Excel 循环,用于扩展单元格范围
- java - Clickhouse 在 INSERT INTO CSV 上的 DateTime 值无效