我无法理解UDR失败的原因: 当我使用Eclipse在Windows上编译代码时,programe能够在UNIX上的informix DB中插入记录,同时代码失败 在Unix(SunOS 5.10)上的同一informix(11.50)DB中注册为UDR时,在运行时抛出以下异常。 / *惊喜是合并在两种情况下都能正常工作但仍然存在失败* /
发现异常:
javax.persistence.RollbackException:Exception [EclipseLink-4002](Eclipse Persistence Services - 2.1.2.v20101206-r8635):org.eclipse.persistence.exceptions.DatabaseException 内部异常:java.sql.SQLException:系统或内部错误java.lang.NullPointerException 错误代码:-79716 致电:INSERT INTO ....
我的代码是:
public abstract class FXOPSDBAccess {
protected EntityManagerFactory emf;
protected EntityManager getEntityManager(){
if(emf == null){
emf = Persistence.createEntityManagerFactory("DALPOCService");
}
EntityManager em = emf.createEntityManager();
Session session = ((JpaEntityManager) em.getDelegate()).getSession();
return em;
}
public class CdaFeedDaoImpl extends FXOPSDBAccess implements CdaFeedDao {
public void setListByWssctrlNo(CdaFeed cdafeedObj) {
EntityManager em = getEntityManager();
try{
EntityTransaction transct = em.getTransaction();
transct.begin();
em.persist(cdafeedObj);
cdafeedObj.setTextField1("This is testing");
transct.commit();
}catch(Exception er){
System.out.println("Exception in setListByWssctrlNo : "+er);
er.printStackTrace();
}finally{
em.close();
}
}
}
public static String checktlinkupdate(Integer tradeno) {
String wssControlNo="This is Test";
List<CdaFeed> cdaFeedresult = new ArrayList<CdaFeed>();
try{
CdaFeedDao cdaFeedDao = (CdaFeedDao) FXOPSDaoFactory.getDAOImpl("CdaFeedDaoImpl");
cdaFeedresult = cdaFeedDao.getListByTradeNo(tradeno.intValue());
wssControlNo = cdaFeedresult.get(0).getWssControlno();
if(cdaFeedresult != null){
cdaFeedDao.setListByWssctrlNo(cdaFeedresult.get(0));
}else{
System.out.println("CdaFeed Object is NULL");
}
} catch ( Exception ex){
ex.printStackTrace();
}
return wssControlNo;
}
}
}
我的UDR名称是:checktlinkupdate
System.getProperty( “java.version”)
答案 0 :(得分:1)
完整的堆栈跟踪和SQL会有所帮助,但似乎是在驱动程序中遇到错误。
您可能希望查看JDBC驱动程序中是否有补丁,或者您是否为数据库版本使用了正确的驱动程序。
否则,请确定SQL中导致错误的内容并尝试解决该问题。