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

2022-08-31 22:20:31

假设我有“主题”表

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”时,我得到类似的行为(相同的例外)。很明显,JPA实现不能真正做任何事情,除非联系DB进行检查。

它的真正用例是什么?

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


答案 1

uniquein 仅在您让 JPA 提供程序为您创建数据库时使用 - 它将在指定的列上创建唯一约束。但是,如果您已经拥有数据库,或者在创建后对其进行了更改,则不会产生任何影响。@Columnunique


答案 2

unique=truein 注释将仅用于 中,它在运行时不会产生任何影响。实际的唯一性检查发生在 .@ColumnDDL generationdatabase


推荐