Java 增加allocationSize会生成非UniqueObjectException
我正试图在我的(Oracle)数据库中插入一组Java 增加allocationSize会生成非UniqueObjectException,java,hibernate,jpa,Java,Hibernate,Jpa,我正试图在我的(Oracle)数据库中插入一组母对象对象,这些对象包含一组子对象。这些对象的所有ID都是使用以下序列生成的: @Entity @Table(name = "MOTHER") public class Mother implements Serializable { @Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator="SEQ_MOTHER") @SequenceGenerat
母对象
对象,这些对象包含一组子对象。这些对象的所有ID都是使用以下序列生成的:
@Entity
@Table(name = "MOTHER")
public class Mother implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator="SEQ_MOTHER")
@SequenceGenerator(name="SEQ_MOTHER", allocationSize=100) //Error?!?
@Column(name = "ID")
private Long id;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "mother",
orphanRemoval = true)
private List<Child> children;
}
在我的模型中,如果我没有设置任何allocationSize
(根据文档,默认值为50),或者将其设置为小于50的值,则一切正常
但是,如果我尝试将其设置为100或更高,那么我会一直出现非UniqueObjectException
:
javax.persistence.PersistenceException: org.hibernate.NonUniqueObjectException:
a different object with the same identifier value was already associated with
the session
“解决方案”可以是更改级联(我没有尝试更改它),但我希望在持久化母实例(并检索它们…)时持久化所有子实例
我可能不需要将alocationSize
设置为一个高值,但是如何增加它以提高插入性能而不出现异常?以及如何确保即使不设置,错误也不会隐藏在某个地方?您必须将生成器的分配大小设置为与序列上的“INCREMENT BY”相同的值。有关JPA测序的更多信息
javax.persistence.PersistenceException: org.hibernate.NonUniqueObjectException:
a different object with the same identifier value was already associated with
the session