JavaとJavaEEプログラマのブログ

JavaEEを中心にしたをソフトウェア開発についてのブログ

の設定が無い場合のエラー

テストケースの実行が不定期に失敗する時に発生しているエラー。
JPAがEntityクラスの読み込みに失敗しているらしい。
persistence.xmlタグで使用するEntityクラスを指定してやると解決。
タグの追加はEntityクラスの新規作成ウィザードを使えばNetBeansが自動で挿入してくれるし、手入力でもEntityクラスだけに絞り込んで補完してくれるので大して手間はかからない。

java.lang.IllegalArgumentException: Object: biz.solidc.study.jpa.jpastudy.oneToMany.Customer@3f5b422e[orders=[biz.solidc.study.jpa.jpastudy.oneToOne.Order@4ad23a8f[product=biz.solidc.study.jpa.jpastudy.oneToOne.Product@423d8285[id=1,name=製品-A],id=3,name=注文1], biz.solidc.study.jpa.jpastudy.oneToOne.Order@3002a8a9[product=biz.solidc.study.jpa.jpastudy.oneToOne.Product@e48c264[id=2,name=製品-B],id=4,name=注文2]],id=<null>,name=顧客太郎,tel=777-090-9888] is not a known entity type.
testInsert(biz.solidc.study.jpa.jpastudy.oneWay.oneToOne.OneToOneTest)  Time elapsed: 0.017 sec  <<< ERROR!
javax.persistence.RollbackException: java.lang.IllegalStateException: During synchronization a new object was found through a relationship that was not marked cascade PERSIST: biz.solidc.study.jpa.jpastudy.oneWay.oneToOne.Product@49bcb0d6[id=<null>,name=製品-A].
	at org.eclipse.persistence.internal.jpa.transaction.EntityTransactionImpl.commitInternal(EntityTransactionImpl.java:102)
	at org.eclipse.persistence.internal.jpa.transaction.EntityTransactionImpl.commit(EntityTransactionImpl.java:63)
	at biz.solidc.study.jpa.jpastudy.oneWay.oneToOne.OneToOneTest.testInsert(OneToOneTest.java:42)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:601)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
	at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
	at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)