org.springframework.orm.jpa.JpaSystemException:批量更新从更新中返回了意外的行数
org.springframework.orm.jpa.JpaSystemException: Batch update returned unexpected row count from update
我得到以下期望:
org.springframework.orm.jpa.JpaSystemException: Batch update returned unexpected row count from update [0]; actual row count: 3; expected: 1; nested exception is
org.hibernate.jdbc.BatchedTooManyRowsAffectedException: Batch update returned unexpected row count from update [0]; actual row count: 3; expected: 1
at org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:314) ~[spring-orm-4.2.4.RELEASE.jar:4.2.4.RELEASE]
当我尝试级联删除与另一个实体(狗)具有一对多关系的实体(犬舍)时,会发生这种情况。
删除代码(使用CRUD仓库删除方式):
kennelRepository.delete(kennelEntity);
犬舍实体 (Parent):
@Entity
@Table(name = "KENNEL")
public class Kennel implements Serializable
{
//other fields and getters/setters
@OneToMany(mappedBy = "kennel", cascade = CascadeType.ALL, fetch = FetchType.LAZY, orphanRemoval = true)
private List<Dog> dogList = new LinkedList<Dog>();
狗实体 (Child):
@Entity
@Table(name = "DOG")
public class Dog implements Serializable
{
//other fields and getters/setters
@ManyToOne
@JoinColumns({
@JoinColumn(name = "KENNEL_ID", referencedColumnName = "KENNEL_ID"),
@JoinColumn(name = "KENNEL_NUMBER", referencedColumnName = "KENNEL_NUMBER")
})
private Kennel kennel;
这可能是什么原因造成的?我几乎可以肯定映射是正确的?
我也尝试将获取类型从 LAZY
更改为 EAGER
但同样的错误。
1.This 可能发生在实体已经从后端数据库中手动删除并且休眠试图再次删除它的情况下。
2.Just检查是否有其他进程正在删除记录
我得到以下期望:
org.springframework.orm.jpa.JpaSystemException: Batch update returned unexpected row count from update [0]; actual row count: 3; expected: 1; nested exception is
org.hibernate.jdbc.BatchedTooManyRowsAffectedException: Batch update returned unexpected row count from update [0]; actual row count: 3; expected: 1
at org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:314) ~[spring-orm-4.2.4.RELEASE.jar:4.2.4.RELEASE]
当我尝试级联删除与另一个实体(狗)具有一对多关系的实体(犬舍)时,会发生这种情况。
删除代码(使用CRUD仓库删除方式):
kennelRepository.delete(kennelEntity);
犬舍实体 (Parent):
@Entity
@Table(name = "KENNEL")
public class Kennel implements Serializable
{
//other fields and getters/setters
@OneToMany(mappedBy = "kennel", cascade = CascadeType.ALL, fetch = FetchType.LAZY, orphanRemoval = true)
private List<Dog> dogList = new LinkedList<Dog>();
狗实体 (Child):
@Entity
@Table(name = "DOG")
public class Dog implements Serializable
{
//other fields and getters/setters
@ManyToOne
@JoinColumns({
@JoinColumn(name = "KENNEL_ID", referencedColumnName = "KENNEL_ID"),
@JoinColumn(name = "KENNEL_NUMBER", referencedColumnName = "KENNEL_NUMBER")
})
private Kennel kennel;
这可能是什么原因造成的?我几乎可以肯定映射是正确的?
我也尝试将获取类型从 LAZY
更改为 EAGER
但同样的错误。
1.This 可能发生在实体已经从后端数据库中手动删除并且休眠试图再次删除它的情况下。
2.Just检查是否有其他进程正在删除记录