0

eclipselink(JPA)を介してderbyで挿入/更新とコミットを実行しようとしています。実行中に次の例外が発生します。

java.lang.IllegalArgumentException: Precision exceeds 31 digits!
    at org.apache.derby.client.am.Utils.computeBigDecimalPrecision(Unknown Source)
    at org.apache.derby.client.net.NetStatementRequest.computeProtocolTypesAndLengths(Unknown Source)
    ..
    ..
   at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeDirectNoSelect(DatabaseAccessor.java:788)
   at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeNoSelect(DatabaseAccessor.java:863)
   ..
   at org.eclipse.persistence.internal.jpa.EJBQueryImpl.executeReadQuery(EJBQueryImpl.java:430)
   at org.eclipse.persistence.internal.jpa.EJBQueryImpl.getResultList(EJBQueryImpl.java:714)
   at com.rw.util.RWCommonFactory.getCommonCodeSet(RWCommonFactory.java:194)
   at com.rw.what.RWTransaction.setProcessedStatusCode(RWTransaction.java:218)

RWCommonFactory.getCommonCodeSetには

public RWCommonCodeSet getCommonCodeSet(String name, String value){
 Query query = manager.createNamedQuery(RWCommonCodeSet.FIND_CODE_NAME_CODE_VALUE);
 query.setParameter("codeName", name.trim());
 query.setParameter("codeValue", value.trim());
 List l = query.getResultList();
 if(l.isEmpty()){
    return null;
 }
 else{
    return (RWCommonCodeSet) l.get(0);
 }
 }

RWCommonCodeSetは、10進数の列を含まないエンティティテーブルですが、精度の取得はここでは例外を超えています。

また、この実行では、 DECIMAL(31,5)列を含む他のエンティティを永続化します。

DerbyログとEclipseリンクログを有効にしてみましたが、そのログから正しいエラーを取得できませんでした。

実際のエラーの場所を取得するにはどうすればよいですか。

ありがとう。

4

2 に答える 2

0

あなたのクエリに問題はありません。についてUnknown Sourceは、あなたのエンティティは を使用@Entityせず、 で構成しないでくださいpersistence.xml

于 2012-09-20T15:54:19.457 に答える