JPA – @Column(unique = true) – 具有“独特”属性的真正意义何在?

假设我有’主题’表

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 } 

当我尝试保存具有重复’name’的对象时,有或没有’unique = true’定义,我得到类似的行为(相同的exception。)并且显然JPA实现不能真正做任何事情,除非伸手到DB为检查。

它的真实用例是什么?

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

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

@Column unique=true仅在DDL generation ,它在运行时没有任何影响。 实际的唯一性检查发生在database