【发布时间】:2017-03-07 22:28:32
【问题描述】:
我正在实施Audit Logging 1.1 Grails Plugin 以在我们的项目实施过程中跟踪我的域类的更改。这些是我们场景的示例域对象:
学生需要回答问题。一个问题可以要求一个或多个答案。
class Question {
static auditable = true
Integer id
String content
static hasMany = [
answers: Answer
]
}
class Student {
static auditable = true
Integer id
String name
static hasMany = [
answers: Answer
]
}
class Answer implements Serializable {
static auditable = true
Integer sequence
String value
static belongsTo = [
student: Student,
question: Question
]
static mapping = {
id composite: ["student", "question", "sequence"]
}
}
每次我对这些表中的任何一个执行插入/更新时,插件都会触发一个事件并将其记录到我的 AuditLog 表中。除Answer 表外,所有DML 均按预期成功记录。问题是PERSISTED_OBJECT_ID 始终为空:
+----+---+------------+------------+---------------------+---------------+-----------+-----------+
| ID | … | CLASS_NAME | EVENT_NAME | PERSISTED_OBJECT_ID | PROPERTY_NAME | OLD_VALUE | NEW_VALUE |
+----+---+------------+------------+---------------------+---------------+-----------+-----------+
| … | … | Answer | UPDATE | | value | A | B |
| … | … | Answer | UPDATE | | value | B | A |
+----+---+------------+------------+---------------------+---------------+-----------+-----------+
我尝试包含logIds = true 配置,但它仍然没有持续存在。如果没有该列,我无法确定哪个Answer 是由谁更新的。我希望这将是我拥有的所有复合主键域类的情况。
我能做些什么来解决这个问题?
【问题讨论】:
标签: grails audit-trail