Entitymanager.persist在Informix UDR中失败

时间:2011-09-05 03:07:35

标签: java jpa persistence informix

我无法理解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”)

1 个答案:

答案 0 :(得分:1)

完整的堆栈跟踪和SQL会有所帮助,但似乎是在驱动程序中遇到错误。

您可能希望查看JDBC驱动程序中是否有补丁,或者您是否为数据库版本使用了正确的驱动程序。

否则,请确定SQL中导致错误的内容并尝试解决该问题。