私はGrailsの3.2.11から3.3.2に移行し、奇妙な問題に直面してきた:ドメインクラスがグルーヴィー/メインのsrc /からクラスから継承する場合のGrails 3.3.2ドメインクラスの継承問題
を - それはです初めて作成され、DBに適切に保存されます。しかし、DBから取得して継承されたプロパティを更新しようとすると、DBには戻されません。
例:
abstract class AbstractTest {
String field
}
class Test extends AbstractTest {
static constraints = {
}
}
あなたはGrailsの中で次のスクリプトを実行した場合、それは正しい値を表示しますが、あなたはDBを確認する場合は、コンソール - (作成時に設定)古い値が格納されます。
'ルート'、ノーパス :import testapp.Test
new Test(field: 'original').save(flush: true)
Test test = Test.list().find()
println test.properties
test.field = 'modified'
println test.save(flush: true)
test = Test.list().find()
println test.properties
はhttps://github.com/ahlinist/testGorm
私はMySQLを使用して、ログインを参照してください。
JDBCログ(logSql:true)は、更新クエリがDBに送信されないが、メモリ内の状態(例: Test.list()*。properties)は、継承されたプロパティが正常に更新されたかのように機能します。
祖先のプロパティの更新は3.2.11で正常に機能しました。ドキュメントで回答が見つかりませんでした。私は何が欠けていますか?
grails.gorm @ grails.gorm.blah – injecteer
からEntity' @ 'を使って抽象クラスに注釈を試してみてください。
はPSのマニュアルを参照してください。 annotation.Entityは抽象クラスを別のDBテーブルを持つ永続エンティティにしました。 additinal DBテーブルを持たない継承階層に参加するには、抽象クラスが必要です。 –