如果我把这个方法放到另外一个测试项目里面,就能正常的提交数据,这是为什么?

一个很棘手的问题,做的是XML数据导入功能,数据无法提交,也没有出现任何异常,在控制台里面都没有出现插入语句,但如果我单纯的提交一个对象,就是普通的提交数据功能,也是在用一个事务里面,就能提交数据。

代码如下,若代码有问题,请指出。

/** 

     * 开始导入 

     *  

     * @param xmlList 

     *            XML文件绝对路径数组 

     * @return 

     */  

    private int sendImport(String[] xmlList) {  

        Session session = null;  

        try {  

            session = Database.getSession();  

            Session xmlSession = session.getSession(EntityMode.DOM4J);  

            session.beginTransaction();  

            for (int i = 0; i < xmlList.length; i++) {  

                inportByXML(xmlSession, xmlList[i]);  

            }  

            session.getTransaction().commit();  

        } catch (Exception e) {  

            session.getTransaction().rollback();  

            Database.endTransaction(true);  

            return ERROR_IMPORT;  

        } finally {  

            session.close();  

        }  

        return IMPORT;  

    }  

  

    /** 

     * 存入数据库 

     *  

     * @param xmlSession 

     * @param xmlPath 

     *            XML绝对路径 

     * @throws DocumentException 

     */  

    private void inportByXML(Session xmlSession, String xmlPath)  

            throws DocumentException {  

        SAXReader reader = new SAXReader();  

        Document document = reader.read(xmlPath);  

        List entities = document.getRootElement().content();  

        Iterator it = entities.iterator();  

        while (it.hasNext()) {  

            Node item = (Node) it.next();  

            xmlSession.save(c.getName(), item);  

        }  

    }  


GCT1015
浏览 102回答 2
2回答

料青山看我应如是

[code="java"&nbsp;先保存在session中,然后再commit,你都不往session中装,commit没用。

胡子哥哥

Iterator&nbsp;it&nbsp;=&nbsp;entities.iterator();&nbsp;判断他it&nbsp;是不是为空,不为空在执行&nbsp;
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java