サンプルの GWT/Google Appengine アプリケーションを実行してみました - Roo コマンド「スクリプト費用.roo」を使用して ROO によって生成された費用 (ここでアドバイスされているように)...
このアプリは datanucleus-core - 1.1.6 と HSQLDB をメモリ内データベースとして使用します。
アプリケーションを実行し、Employee オブジェクトを正常に保存および取得することができました。(これらの Employee オブジェクトには日付型のフィールドはなく、string フィールドと int フィールドのみがあります)。
しかし、アプリが「予期しないサーバー エラー」というエラー メッセージを出力して、「レポート」オブジェクトを保存する際に問題が発生しています。ログとデバッグを確認すると、null ではない日付型フィールド (「作成された」日付フィールド) に null を格納しようとしたために、この予期しないエラーが発生しました。
ここがややこしいところです... この Report クラスのソース コードを見ると、「作成された」日付フィールドが「not null」フィールドとして指定されていません (@notnull 注釈がありません)。これを確認するために、データベースを Postgresql に変更し、自動生成されたスキーマを調べたところ、この日付フィールドが実際に「not null」としてマークされていることがわかりました。
これは、自動スキーマ生成中の DataNucleus が常に日付フィールドを「not null」としてマークすることを意味します。
さらに、ORM ライブラリを Hibernate に変更してこれを確認したところ、同じコードで問題なく動作し、HSQL と Postgres DB の両方に日付フィールドを含むレポート オブジェクトを保存できました。
これは DataNucleus のバグですか? 他の誰かがこの問題を見ていますか?