org.springframework.dao.DataIntegrityViolationException: Could not execute JDBC batch update; SQL [insert into role_privilege (roleId, privilegeId) values (?, ?)]; constraint [null]; nested exception is org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update
org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:643) org.springframework.orm.hibernate3.HibernateTransactionManager.convertHibernateAccessException(HibernateTransactionManager.java:795) org.springframework.orm.hibernate3.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:666) org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:755) org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:724) org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:475) org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:270) org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:94) org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) $Proxy13.update(Unknown Source)
消息:
1.对于“PRIMARY”键重复输入“1”
2.无法执行JDBC批量更新
3.无法执行JDBC批量更新; SQL [insert into role_privilege(roleId,privilegeId)values(?,?)]; 约束[null]; 嵌套异常是 org.hibernate.exception.ConstraintViolationException:无法执行JDBC批量更新
原因:这是因为数据库中roleId是主键,在修改时有重复的数据保存了进去,因为,主键是唯一不为空的,所以才会报这种错。
解决:把主键给去掉就可以了