Hibernate Batch Insert 150记录Oracle

时间:2017-03-03 17:13:43

标签: java hibernate jdbc oracle11g

我有一个如下的父类

@Entity
@Table(name = "parent")
public class Parentimplements Serializable, Cloneable {

@Id
@GeneratedValue(strategy = GenerationType.AUTO, generator = "parent-seq")
@SequenceGenerator(name = "parent-seq", sequenceName = "parent_sequence")
private Long id;

@OneToMany(mappedBy = "parent")
@Cascade({CascadeType.PERSIST, CascadeType.MERGE, CascadeType.ALL})
@Sort(type = SortType.NATURAL)
private SortedSet<Child> requirements = new TreeSet<Child>();

并尝试将父级插入到具有150个子级的oracle数据库中。使用hibernate.jdbc.batch_size = 50时,50次插入后找不到抛出Integrity违规父键。在将批量大小增加到150之后,然后在150之后插入其抛出相同的异常,包括jdbc批量更新异常。

1 个答案:

答案 0 :(得分:0)

我想到了两个解决方案:

  1. 首先插入父记录
  2. 使用DEFERRABLE约束