我有一个Site代表网站的Class和一个Class User。A Site可以有多个User。
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
我怎样才能做到这一点?
让用户拥有一个站点参考:
@ManyToOne(optional=false) private Site site;
现在将约束添加到用户:
@Table(uniqueConstraints = { @UniqueConstraint(columnNames = { "username", "site" })) } @Entity public class User{ // etc }
您还必须更改站点映射:
@OneToMany(mappedBy="site") private List<User> users;