一尘不染

JPA如何在@OneToMany关系的列上添加唯一约束如用户名

hibernate

我有一个Site代表网站的Class和一个Class User。A Site可以有多个User

class Site {

    private int site_ID;

    @OneToMany // with a join table
    private List<User> users;
    // ...
}

class User {

    private int user_ID;

    private String name;

    private String lastname;

    private String username;

    private String password;

}

我想允许所有站点上都存在相同的用户名,但每个站点上都只有一个。

Site/User/username
1   /1   /username1
1   /2   /username2
2   /3   /username1

我怎样才能做到这一点?


阅读 476

收藏
2020-06-20

共1个答案

一尘不染

让用户拥有一个站点参考:

@ManyToOne(optional=false)
private Site site;

现在将约束添加到用户:

@Table(uniqueConstraints = {
    @UniqueConstraint(columnNames = { "username", "site" }))
} @Entity
public class User{
// etc
}

您还必须更改站点映射:

@OneToMany(mappedBy="site")
private List<User> users;
2020-06-20