如何解决为什么@Columnunique = true不起作用?
我有以下代码:
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(name = "FIRST_NAME")
private String firstName;
@Column(name = "LAST_NAME")
private String lastName;
@NotNull
@Column(name = "LOGIN",unique = true)
private String login;
@Column(name = "PASSWORD")
private String password;
@Column(name = "ROLE")
private UserRole role;
@Column(name = "E_MAIL",unique = true)
private String email;
@Convert(converter = UserStrategyConverter.class)
@Column(name = "STRATEGY")
private UserStrategy userStrategy;
@Column(name = "SUBSCRIPTION")
private Boolean subscription;
@Column(name = "MONEY")
private BigDecimal money;
我的问题:当我将邮递员的这个对象放在json中时:
{
"firstName": "Daniel","lastName": "xxx","password": "daniel","role": "ROLE_USER","email": "test@test.pl","subscription": false,"money": "1200"
}
它在实体中创建对象。问题是因为我可以一次又一次地乘以该对象,而不是在列(unique = true
和email
)中乘login
。谁能解释我为什么?
解决方法
Hibernate仅在schema generation时才考虑约束unique = true
。
在生成模式期间,将添加以下约束:
alter table User
add constraint UK_u31e1frmjp9mxf8k8tmp990i unique (email)
如果不使用模式生成,则不会使用unique = true
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。