0

サンプルの 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 のバグですか? 他の誰かがこの問題を見ていますか?

4

1 に答える 1

1

DataNucleus を多くの日付フィールド (タイムスタンプまたは DATE) を持つ JPA として使用しましたが、まったく問題はありませんでした。SchemaTool は常に DDL で「NULL」として作成します (null を許可)。Entity クラスまたはログを引用していないため、これ以上利用できるヘルプはありません

于 2010-07-15T08:14:20.370 に答える