【发布时间】:2019-01-23 16:10:56
【问题描述】:
我需要为我的项目中的所有 CRUD 操作实施审计历史记录。该项目使用 Spring JPA Data Rest。我四处寻找好的库来完成所需的任务,并遇到了这个Hibernate Envers,它看起来非常好并且易于实现。将其合并到我的项目中后,我能够记录所有 CRUD 操作的修订。
现在我需要公开更改,用户可以在其中看到所做的更改是任何修订的一部分。以下是我想要的 delta 输出(为了便于阅读,我将其放入 JSON 格式)。
[
{
"date": "9 may 2018, 6:06 pm",
"user": "user.name (FName LName)",
"actions": [
{
"field": "name",
"oldValue": "Old Name very long",
"newValue": "New Name also quite long."
},
{
"field": "score",
"oldValue": 2,
"newValue": 4
},
{
"field": "average_rating",
"oldValue": "AA",
"newValue": "A"
}
]
},{
"date": "10 may 2018, 5:06 pm",
"user": "user.name (FName LName)",
"actions": [
{
"field":"name",
"oldValue": "Old Name",
"newValue": "New Name"
},
{
"field":"score",
"oldValue": 1,
"newValue": 6
},
{
"field":"average_rating",
"oldValue": "D",
"newValue": "A+"
},
{
"field":"rating",
"oldValue": "A-",
"newValue": "A"
}
]
},{
"date": "10 may 2018, 5:06 pm",
"user": "user.name3 (FName3 LName3)",
"actions": [
{
"field":"average_rating",
"oldValue": "D",
"newValue": "B"
},
{
"field":"rating",
"oldValue": "C",
"newValue": "D"
}
]
},{
"date": "11 may 2018, 5:06 pm",
"user": "user2.name2 (FName2 LName2)",
"actions": [
{
"field":"score",
"oldValue": 3,
"newValue": 4
},
{
"field":"average_rating",
"oldValue": "C",
"newValue": "B"
}
]
},{
"date": "9 apr 2018, 3:00 pm",
"user": "user.name (FName LName)",
"actions": [
{
"field":"name",
"oldValue": "Old Name very long",
"newValue": "New Name also quite long."
},
{
"field":"score",
"oldValue": 5,
"newValue": 3
},
{
"field":"average_rating",
"oldValue": "AA",
"newValue": "B"
},
{
"field":"edf_score",
"oldValue": 4,
"newValue": 2
},
{
"field":"edf_average_rating",
"oldValue": "BBB+",
"newValue": "BB"
}
]
}
]
我需要以 JSON-HAL 格式公开这些。
提前致谢。
【问题讨论】:
-
您能否具体告诉我您正在使用哪个版本的 Hibernate 和 Envers,因为这会影响哪些 API 最适合您所需的输出?
-
嗨 @Naros,Hibernate 和 Envers 的 5.2.17.Final
标签: hibernate spring-data-jpa hibernate-envers changeset