提交会话时出现Hibernate错误

时间:2016-06-13 15:33:26

标签: java hibernate

这是我在DAOImpl(Hibernate)中的代码:

@Transactional
    public void insert(Cage cage) {

        Session session = null;
        Transaction tx = null;

        try{
            session = getHibernateTemplate().getSessionFactory().openSession();
            tx = session.beginTransaction();
            session.saveOrUpdate(cage);
            session.flush();
            session.clear();
            tx.commit();

        }catch(RuntimeException e){
            try{
                tx.rollback();
            }catch(RuntimeException rbe){
                rbe.printStackTrace();
                System.out.println("Couldn’t roll back transaction");
            }
            throw e;
        }finally{
            if(session!=null){
                session.close();
            }
        }
    }

第二次运行数据输入(相同PK)时出现此问题:

  

org.hibernate.exception.ConstraintViolationException:无法执行JDBC批量更新

1 个答案:

答案 0 :(得分:1)

根据您的问题

When for the second time operations data entry (Same PK) takes place with this problem : org.hibernate.exception.ConstraintViolationException:

您尝试两次插入相同的主键。 您无法在数据库中为两个条目使用相同的主键。

主键必须包含UNIQUE值。 检查此链接 http://www.w3schools.com/sql/sql_primarykey.asp

保持主键唯一,你不会得到这个例外。 如果您需要该coloumn的重复条目,那么不要将它作为主键

自动生成ID

@Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(名称=" \" ID \"&#34) private int id;