- - PR -
JPA(hibernate)で列挙型配列を使うとロールバック
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2009-01-25 08:01
あるEJB3.0 Entityをinsertすると、
StandardWrapperValve[NewServlet]: PWC1406: サーブレット NewServlet の Servlet.service() が例外をスローしました javax.ejb.EJBException: Transaction aborted; nested exception is: javax.transaction.RollbackException: トランザクションにロールバックのマークが付けられています。 javax.transaction.RollbackException: トランザクションにロールバックのマークが付けられています。 at com.sun.enterprise.distributedtx.J2EETransaction.commit(J2EETransaction.java:440) at com.sun.enterprise.distributedtx.J2EETransactionManagerOpt.commit(J2EETransactionManagerOpt.java:371) 。。。。 上記のような例外に悩まされ続けていました。調査した結果 new PCUsage[]{PCUsage.プレゼン} こんなような列挙型配列を入れると上記エラーが出ることがわかりました。 new String[]{"",""}これだと出ないし、ただの列挙型でも出ませんでした。 toplinkだと出ないし、hibernateでも構築は通るのですが、実行時に値を入れると出ます。 原因、解決法をご存知の方いませんか? |
|
投稿日時: 2009-01-25 09:44
とりあえず、
<T extends Enum> T[] valueOf( Class<T> t, String[] args); String[] toString(Enum[] enums); の2つのメソッドでString[]<==>Enum[]を変換して、DBにはString[]を入れる事に して急場を凌ぎました。 実際問題、Enum[]を扱えるtoplinkと扱えないhibernate、どっちがJPA実装としては 正しいのでしょうか? |
1