我的java应用程序中出现以下异常。
org.springframework.transaction.TransactionSystemException: Could not commit JPA transaction; nested exception is javax.persistence.RollbackException: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.6.0.v20150309-bf26070): org.eclipse.persistence.exceptions.DatabaseException
内部异常:java.sql.SQLIntegrityConstraintViolationException:ORA-00001:违反了唯一约束(USER1.ID_TYPE_TENANT_UNIQUE)。
我有一个数据模型,在两个表之间设置了ManyToMany关联。两者之间有一个JoinTable,我就像这样设置实体。
public class MyEntity {
@Id
@SequenceGenerator( name = "MyEntitySeq", sequenceName = "SQ_ENTITY", allocationSize = 1, initialValue = 1 )
@GeneratedValue(strategy = GenerationType.IDENTITY, generator = "MyEntitySeq")
@Column(name = "ID")
private Integer id;
@ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinTable(name = "MY_JOINED_TABLE",
joinColumns = {
@JoinColumn(name = "e_id", referencedColumnName = "ID")},
inverseJoinColumns = {
@JoinColumn(name = "inverse_id", referencedColumnName = "ID")})
private Set<Attributes> attributes;
}
我对实体表中的其他3个字段有唯一约束,对name,value上的属性表有唯一约束。当我尝试持久化具有一组属性的实体时,repository.save()方法会因以下原因而失败: 1.一个属性可能已经存在于属性表中,并且由于唯一约束而无法插入(这就是我想要的。但我仍然希望创建与这些属性的关联到实体) 2.实体可能已经存在但违反了唯一约束。 (我还想插入数据库中已经存在的属性,并创建与该实体的关联属性)。
如果这些实体/属性不在数据库中,它可以正常工作,并使用连接和所有内容将spring插入到所有3个表中。
如果我对没有关联的表执行repository.save(),则save()会更新这些表,即使我对同一主键执行save()也是如此。
为什么它不适用于我的多种情况?
答案 0 :(得分:0)
试试这个(对不起我的英语,我在Spring MVC和Hibernate中的noob),我有类似的问题,这一点很重要: