我有一个ManyToMany关系从名为Card的类到名为Color的类。我正在使用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