内部类的JPA UniqueContraint

时间:2016-03-30 12:27:44

标签: java jpa

我对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"})})

你知道我怎么能这样做?

非常感谢你!

0 个答案:

没有答案