Cayenne を ORM として使用して変更をコミットしようとすると、エラーが発生する次のコードを実行しています。コードは以下に貼り付けられ、context.commitChanges(); 行でエラーが発生します。出力メッセージはコードの下に貼り付けられます。これを理解するための助けをいただければ幸いです。
org.apache.cayenne.access.DataContext をインポートします。 import java.util.*; com.jared.* をインポートします。 パブリック クラス メイン { public static void main(String[] args) { DataContext コンテキスト = DataContext.createDataContext(); 株式 theStock=(株式) context.createAndRegisterNewObject(Stocks.class); theStock.setAsk(3.4); theStock.setAvgdailyvolume(323849); theStock .setBid(5.29); theStock.setChange(-1.22); theStock.setDayhigh(9.21); theStock.setDaylow(2.11); theStock.setLasttradeprice(5.11); theStock.setLasttradesize(3827); theStock.setOpen(6.21); theStock.setPriorclose(4.21); theStock.setShortatio(1.1); theStock.setSymbol("^SP%"); theStock.setVolume(28193); theStock.setLasttradedate(新しい日付()); context.commitChanges(); System.out.println("データベースの処理を完了"); } }
2008 年 11 月 20 日 11:20:37 PM org.apache.cayenne.conf.RuntimeLoadDelegate startedLoading 情報: 構成の読み込みを開始しました。 2008 年 11 月 20 日 11:20:37 PM org.apache.cayenne.conf.RuntimeLoadDelegate shouldLoadDataDomain 情報: ロードされたドメイン: 株式 2008 年 11 月 20 日 11:20:37 PM org.apache.cayenne.conf.RuntimeLoadDelegate loadDataMap 情報: ロードされました。 2008 年 11 月 20 日 11:20:37 PM org.apache.cayenne.conf.RuntimeLoadDelegate shouldLoadDataNode 情報: を読み込んでいます。 2008 年 11 月 20 日 11:20:37 PM org.apache.cayenne.conf.RuntimeLoadDelegate shouldLoadDataNode 情報: ファクトリを使用: org.apache.cayenne.conf.DriverDataSourceFactory 2008 年 11 月 20 日 11:20:37 PM org.apache.cayenne.conf.DriverDataSourceFactory ロード 情報: 「stocksNode.driver.xml」からドライバー情報を読み込んでいます。 2008 年 11 月 20 日 11:20:37 PM org.apache.cayenne.conf.DriverDataSourceFactory$DriverHandler init 情報: ドライバー org.hsqldb.jdbcDriver をロードしています 2008 年 11 月 20 日 11:20:37 PM org.apache.cayenne.conf.DriverDataSourceFactory$LoginHandler init 情報: ユーザー名とパスワードを読み込んでいます。 2008 年 11 月 20 日 11:20:37 PM org.apache.cayenne.access.QueryLogger logPoolCreated 情報: 接続プールを作成しました: jdbc:hsqldb:file:/hsqldb/data/stocks ドライバークラス: org.hsqldb.jdbcDriver 最小。プール内の接続: 1 最大。プール内の接続: 1 2008 年 11 月 20 日 11:20:37 PM org.apache.cayenne.conf.RuntimeLoadDelegate shouldLoadDataNode 情報: データソースがロードされました。 2008 年 11 月 20 日 11:20:37 PM org.apache.cayenne.conf.RuntimeLoadDelegate initAdapter 情報: アダプターが設定されていません。自動アダプターを使用しています。 2008 年 11 月 20 日 11:20:37 PM org.apache.cayenne.conf.RuntimeLoadDelegate 情報: 203 ミリ秒で構成の読み込みが完了しました。 スレッド「メイン」での例外 org.apache.cayenne.CayenneRuntimeException: [v.3.0M4 2008 年 5 月 18 日 16:32:02] コミット例外 org.apache.cayenne.access.DataContext.flushToParent (DataContext.java:1192) で org.apache.cayenne.access.DataContext.commitChanges (DataContext.java:1066) で Main.main(Main.java:24) で 原因: java.lang.NullPointerException org.apache.cayenne.access.DataDomainInsertBucket.createPermIds (DataDomainInsertBucket.java:101) で org.apache.cayenne.access.DataDomainInsertBucket.appendQueriesInternal (DataDomainInsertBucket.java:76) で org.apache.cayenne.access.DataDomainSyncBucket.appendQueries (DataDomainSyncBucket.java:80) で org.apache.cayenne.access.DataDomainFlushAction.preprocess (DataDomainFlushAction.java:183) で org.apache.cayenne.access.DataDomainFlushAction.flush (DataDomainFlushAction.java:135) で org.apache.cayenne.access.DataDomain.onSyncFlush (DataDomain.java:821) で org.apache.cayenne.access.DataDomain$2.transform (DataDomain.java:788) で org.apache.cayenne.access.DataDomain.runInTransaction (DataDomain.java:847) で org.apache.cayenne.access.DataDomain.onSync (DataDomain.java:785) で org.apache.cayenne.access.DataContext.flushToParent (DataContext.java:1164) で ... 2以上