私は、CardというクラスからColorというクラスへのManyToMany関係を持っています。 JPAとHibernateを使用しています。JPA ManyToMany固有の属性を持つ関係
Card.java
@Entity(name = "Cards")
public class Card
{
@Id
@Column(name = "card_id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long cardId;
@ManyToMany(cascade = CascadeType.ALL)
private List<Color> colors;
}
Color.java
@Entity(name = "Colors")
public class Color
{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long colorId;
@Column(unique = true)
private String name;
}
しかし、私はカードのjavaを持続していた場合黒は既に色に含まれているため、例外がスローされます。
com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry 'Black' for key 'UK_sd7tby3rtx8snv2vlbmlmy69o'
しかし、私はColors.nameが一意になりたいとJPAは色がすでに永続化される場合の色を検索し、永続色を使用する必要があります。
それはあなたの仕事で、JPAは「色が既に持続している場合はカラーを検索」しません。 JPAはあなたがそれを与えることを維持するためにそこにある –
ああ大丈夫。この事実を知らなかった:/ – Implex1v