提供一个包含用户名和电子邮件的用户表。用户可以使用用户名和电子邮件登录。用户可以选择电子邮件作为其用户名。
用户更改用户名或电子邮件时,新值在所有用户名和电子邮件的组合中必须唯一。
是否可以使用休眠符号对它进行建模,还是需要像Java验证例程那样在更高级别上进行?
小例子:
| username | email |
|----------+------------|
| user1 | a@smth.com |
| user2 | b@smth.com |
user2将用户名更改为a@smth.com应该是非法的操作,因为user1已经具有此值作为其电子邮件地址。
答案 0 :(得分:1)
以下是示例代码,供您参考。
@Entity()
@Table(name = "users",uniqueConstraints= @UniqueConstraint(columnNames = {"email", "username"}) )
public class Employee {
@Column(name = "username")
private String username;
@Column(name = "email")
private String email;
//All other user entity fields and getters/setters etc......
}
这里是link供您参考。
答案 1 :(得分:0)
@coladict说:
然后,JPA或Hibernate不支持所需的内容。如果您的数据库版本为8.0.16或更高版本,则可以添加检查约束,但是在调用persist(user)之前,您必须手动执行检查约束
这不在休眠的可能性范围内。我们的解决方案是在验证对象时进行检查。当然,这是以计算为代价的,我们必须确保在数据库中有相应的索引,以尽可能缩短查询时间。