Javaアプリケーションで次の例外が発生します。SpringデータjpaリポジトリsaveToがManyToManyで動作しない
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)違反。
私は、2つのテーブル間のManyToManyアソシエーションを使用してデータモデルを設定しました。 2つの間に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.エンティティは既に存在する可能性がありますが、ユニーク制約が違反されている可能性があります。 (まだデータベースにない属性を挿入して、このエンティティと属性に関連付ける)。
これらのエンティティ/属性がデータベースにない場合、それは参加するとすべてに、すべての3つのテーブルに罰金と春のインサートを動作します。
ノー団体とテーブル上のrepository.save()を行う場合には、保存()は同じ主キーの私は保存しない場合でも、これらのテーブルを()を更新します。
なぜ私のmanytomanyの場合は機能しませんか?
こんにちはを持っているあなたの永続コンテキスト-XMLでは、私は思っていたということ?私は関連する問題があるかもしれません。 – dasnervtdoch