ドメイン クラスでは、「割り当てられた」ID ジェネレーターを使用しています。
static mapping = {
id(generator: 'assigned')
}
エンティティを保存する前に、ID が設定されていることを確認したいと思います。
def beforeSave() {
if (!id) {
id = DomainUtil.newId();
}
}
残念ながら、これは機能しません:
org.hibernate.id.IdentifierGenerationException: ids for this class must be manually assigned before calling save(): was.Product
「beforeSave」フックは、ID のチェックが行われた後に呼び出されるようです。これを回避する方法はありますか? Grails 2.1.1 を使用しています。
編集:
これは機能しているように見えますが、かなりハックです: プロパティの宣言で、次のように追加しました:
String id = DomainUtil.newId();
これにより、ID が「デフォルト」で初期化されます。これは、 を呼び出す前に変更できますsave()
。