【问题标题】:Is there a way to add information on fields of a class? [closed]有没有办法在类的字段上添加信息? [关闭]
【发布时间】:2020-10-19 11:21:19
【问题描述】:

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

  • 变量的值改变了
  • 之前的变量值为 null,现在已定义
  • 值已被删除

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

【问题讨论】:

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

标签: java class object add difference


【解决方案1】:

有没有办法在类的(该)字段上添加信息?

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

让我们举一个简单的例子。假设我们有一个 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。对于删除,after 字段为空白或 null。时间戳可让您查看更改的时间。进行更改的人通常也会被记录下来,因此您可以查看谁进行了未经授权的更改。

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

【讨论】:

    猜你喜欢
    • 2021-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-17
    • 2020-02-24
    • 1970-01-01
    相关资源
    最近更新 更多