を実装して、プロジェクトの実装の途中でドメインクラスの変更を追跡しています。以下は、このシナリオのドメインオブジェクトの例です。監査ロギングで複合主キーのテーブルのIDがスキップされます
学生は質問に回答する必要があります。質問では、1つまたは複数の回答を求めることができます。
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
テーブルにそれを記録します。 DML
は、Answer
テーブルを除いて正常に正常に記録されます。
+----+---+------------+------------+---------------------+---------------+-----------+-----------+
| 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
設定を含めることを試みたが、それはまだ永続ない:問題はPERSISTED_OBJECT_ID
は常にnullであるということです。その列がなければ、私はAnswer
が誰によって更新されたか特定できません。私はこれが私が持っている複合主キードメインクラスのすべてのケースであることを期待しています。
これを解決するにはどうすればよいですか?
ため同じように機能するだろうと思いますか? – Gideon