Java 有没有办法添加类字段的信息?

Java 有没有办法添加类字段的信息?,java,class,object,add,difference,Java,Class,Object,Add,Difference,我有一个模型,里面有不同的变量(字符串、日期、整数),其中一些是其他嵌套对象。 我需要找出此模型的两个实例之间的差异并对其进行标记(标记的类型很重要,但标记有三个: 变量的值已更改 以前的变量值为null,现在已定义 值已被删除 问题是,我无法更改所使用的模型,因为它非常复杂,并且附加到JPA(我正在考虑更改某种可标记对象中任何变量的类型)。 两者都不可能只生成一组修改、添加和删除的值,输出必须保留对象结构,因为在这之后,它应该打印在一个.xlsx文件中,并对数据进行一些自定义操作。 所以,

我有一个模型,里面有不同的变量(字符串、日期、整数),其中一些是其他嵌套对象。 我需要找出此模型的两个实例之间的差异并对其进行标记(标记的类型很重要,但标记有三个:

  • 变量的值已更改
  • 以前的变量值为null,现在已定义
  • 值已被删除
问题是,我无法更改所使用的模型,因为它非常复杂,并且附加到JPA(我正在考虑更改某种可标记对象中任何变量的类型)。 两者都不可能只生成一组修改、添加和删除的值,输出必须保留对象结构,因为在这之后,它应该打印在一个.xlsx文件中,并对数据进行一些自定义操作。 所以,我的问题是:“有没有一种方法可以在类的字段中添加信息?”或者可能有一种不同的方法来处理这个差异标记问题

有没有办法在类的字段中添加信息

不,没有。您要做的通常称为日志记录。例如,大多数数据库都会创建所有数据库更改的日志

让我们举一个简单的例子,假设我们有一个
Person

Person
------
Person ID
Person Name
Person Address
我们想监控姓名或地址的变化

我们通过一个额外的类来实现这一点,我们称之为
PersonChanges

PersonChanges
-------------
PersonChanges ID
Person ID
PersonChanges Field (Name or Address)
PersonChanges Before
PersonChanges After
PersonChanges Timestamp
PersonChanges Who Made The Change
对于插入,前字段为空或null。对于删除,后字段为空或null。时间戳允许您查看更改是何时进行的。通常还会记录进行更改的人员,以便您可以查看谁进行了未经授权的更改


您可以通过在现有系统上创建日志系统来监控更改。您必须在应用程序中找到模型更改的每个实例,并添加代码来记录更改。

如果您使用JPA,持久性提供程序将已经跟踪在上下文/会话中跟踪的对象所做的更改。这看起来像n XY问题。您真正想在这里实现的是什么?您可以通过将变量注释为
@transient
来向实体类添加变量。这样,JPA将忽略这些变量。