Сбой Entitymanager.persist в Informix UDR - PullRequest
1 голос
/ 05 сентября 2011

Я не могу понять причину сбоя в UDR: здесь, когда я компилирую код в Windows с помощью Eclipse, программа может вставить запись в базу данных informix, находящуюся в UNIX, в то время как тот же код завершается с ошибкой и выдает ниже Exception atвремя выполнения при регистрации в качестве UDR в той же базе данных informix (11.50) в Unix (SunOS 5.10)./ * Сюрприз в том, что слияние работает нормально в обоих случаях, но постоянное сбой * /

Обнаружено исключение:

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 Ответ

1 голос
/ 09 мая 2012

Полная трассировка стека и SQL помогли бы, но, похоже, это ошибка в драйвере.

Вы можете посмотреть, есть ли патч в драйвере JDBC или выиспользуете правильный драйвер для вашей версии базы данных.

В противном случае определите, что в SQL вызывает ошибку, и попробуйте ее обойти.

...