一尘不染

JPA-@Column(unique = true)-具有'unique'属性的真正意义是什么?

hibernate

假设我有“主题”表

CREATE TABLE subject (id int PRIMARY KEY, name VARCHAR(255) **UNIQUE**)

和相关的映射对象,

@Entity
@Table(name="subject")
public class SubjectDO {
    @Id
    @Column(name="id")
    int id;

    @Column(name="name", unique=true)
    String name;
    ...
    // Getter-Setter methods
}

当我尝试保存具有重复的“名称”且没有定义“ unique =
true”的对象时,我得到了类似的行为(相同的异常。)很明显,除非向DB伸出援手,否则JPA实现无法真正做任何事情检查。

真正的用例是什么?

(我在这里假设,唯一约束也是在数据库级别定义的。)


阅读 932

收藏
2020-06-20

共1个答案

一尘不染

unique@Column如果你让你的JPA提供者为您创建数据库只使用-
这将在指定的列上的唯一约束。但是,如果您已经拥有数据库,或者一旦创建就对其进行了更改,那么它将unique没有任何效果。

2020-06-20