【发布时间】:2019-07-17 15:43:22
【问题描述】:
我想编写一个通用函数,它接受同一实体类的两个对象并比较不同的字段并返回对特定字段所做的所有更改的列表以及时间。
众多实体类中的一个可以说是如下的成员
public class Member {
String firstName;
String lastName;
String driverLicenseNumber;
Integer age;
LocalDateTime timestamp;
}
在数据库中,我有一个名为 member_audit 的表,只要使用触发器在成员表中发生更改(对于其他实体也是如此),它就会填充旧数据。
我要返回的每个实体的资源列表类似于
public class MemberAuditsResource {
private String field;
private LocalDateTime on;
private String changeType;
private String oldValue;
private String newValue;
}
我只能想像这样为每个实体分别写一个函数
private List<MembeAuditsResource> memberCompare(Member obj1, Member obj2) {
//Compare every field in both the objects using if else and populate the resource.
}
然后调用上面的函数来比较entity_audit表中的每一对记录。 代码将非常大,无法比较每个字段并乘以不同的实体。 有没有更好更有效的方法?
【问题讨论】:
-
嗯,你可以看看 Envers,它是一个“为实体类提供审计的休眠模块”,请参阅 hibernate.org/orm/envers 和 stackoverflow.com/questions/42340179/…
-
比较每个字段并乘以不同实体的代码会非常大 ...在这种情况下比较对象,不是也可以吗?
标签: java spring spring-boot java-8