为什么@Column(unique = true)不起作用?

时间:2020-08-27 12:05:56

标签: java hibernate entity

我有以下代码:

@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 = trueemail)中乘login。谁能解释我为什么?

1 个答案:

答案 0 :(得分:1)

Hibernate仅在schema generation时才考虑约束unique = true

在生成模式期间,将添加以下约束:

alter table User
add constraint UK_u31e1frmjp9mxf8k8tmp990i unique (email)

如果不使用模式生成,则不会使用unique = true