【发布时间】:2012-09-20 15:37:53
【问题描述】:
我正在尝试通过 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是一个实体表,不包含任何小数列,但这里获取精度超过异常。
此外,在此执行中,我确实保留了一些包含 DECIMAL(31,5) 列的其他实体。
我尝试启用 Derby 日志和 Eclipse 链接日志,但我无法从该日志中得到正确的错误。
我怎样才能得到实际的错误位置。
谢谢。
【问题讨论】:
-
vels4j,你找到问题的根源了吗?
标签: java jpa eclipselink derby