Seb*_*nne 6 java hibernate jpa
我有一个Site代表网站和类的类User.A Site可以有多个Users.
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;
}
Run Code Online (Sandbox Code Playgroud)
我想允许所有网站上存在相同的用户名,但只允许一个网站存在.
Site/User/username
1 /1 /username1
1 /2 /username2
2 /3 /username1
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
让用户拥有站点参考:
@ManyToOne(optional=false)
private Site site;
Run Code Online (Sandbox Code Playgroud)
现在将约束添加到用户:
@Table(uniqueConstraints = {
@UniqueConstraint(columnNames = { "username", "site" }))
} @Entity
public class User{
// etc
}
Run Code Online (Sandbox Code Playgroud)
您还必须更改站点映射:
@OneToMany(mappedBy="site")
private List<User> users;
Run Code Online (Sandbox Code Playgroud)
默认情况下,连接表上的主索引是唯一的,并且基于站点和用户FK因此,您不能让同一用户具有相同的站点重复.
但是如果你想强制约束:
class Site {
private int site_ID;
@OneToMany // with a join table
@JoinTable(
uniqueConstraints=@UniqueConstraint(columnNames={"Site_ID","users_ID"})
)
private List<User> users;
// ...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13426 次 |
| 最近记录: |