这是我在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批量更新
答案 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;