假设我有“主题”表
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实现无法真正做任何事情检查。
真正的用例是什么?
(我在这里假设,唯一约束也是在数据库级别定义的。)
unique在@Column如果你让你的JPA提供者为您创建数据库只使用- 这将在指定的列上的唯一约束。但是,如果您已经拥有数据库,或者一旦创建就对其进行了更改,那么它将unique没有任何效果。
unique
@Column