我对JPA uniqueConstraint有疑问。
我在(字符串)昵称字段中有一个带有uniqueConstraint的PlayerJPA类,但我想在内部对象中的电子邮件字段中添加约束:PersonalInformations。 (我不希望这两个玩家拥有相同的个人信息)
@NamedQueries({
@NamedQuery(name = "player.findAll", query = "select p from PlayerJPA p"),
@NamedQuery(name = "person.removeAll", query = "delete from PlayerJPA "),
@NamedQuery(name = "person.findByEmail", query = "select p from PlayerJPA p where p.personalInformations.email= :email"),
@NamedQuery(name = "person.deleteByEmail", query = "delete from PlayerJPA P where p.personalInformations.email= :email")}
)
@Entity
@Table( name = "PLAYER",
uniqueConstraints = {@UniqueConstraint(columnNames = {"NICK_NAME", "EMAIL"})})
@XmlRootElement
@XmlAccessorType(value = XmlAccessType.FIELD)
@CascadeOnDelete
public class PlayerJPA implements IPlayer {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name ="ID")
private long id;
@Column(name = "NICK_NAME")
@NickName
private String nickName;
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "EMAIL")
private PersonalInformationsJPA personalInformations;
public PlayerJPA(){
}
public long getId() {
return id;
}
public String getNickName() {
return nickName;
}
public void setNickName(String nickName) {
this.nickName = nickName;
}
public PersonalInformationsJPA getPersonalInformations() {
return personalInformations;
}
public void setPersonalInformations(PersonalInformationsJPA personalInformations) {
this.personalInformations = personalInformations;
}
@Override
public String toString() {
return display();
}
}
问题在于它不适用于该行:
@Table( name = "PLAYER",
uniqueConstraints = {@UniqueConstraint(columnNames = {"NICK_NAME", "EMAIL"})})
你知道我怎么能这样做?
非常感谢你!