遇到一个事务无法提交的问题,寻求帮助。

一个很棘手的问题,做的是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);
        }
    }

 

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

[code="java"]Iterator it = entities.iterator(); 判断他it 是不是为空,不为空在执行 [/code]

xmlList.length 数组用length????用size()吧

[code="java"]如果是数组就length属性,如果是String类型就用length()[/code]

把tomcat里面的删了,从新发布,试试