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
。
- org.codehaus.jackson.map.JsonMappingException:无限递归(StackOverflowError)
- 2个JPA实体在同一个表中
- 设置Id(PK)生成值auto和manual
- 测试DAO时出错:sun.reflect.generics.reflectiveObjects.TypeVariableImpl无法强制转换为java.lang.Class
- jpa将儿童从收集中删除
- 日期的hibernate标准
- java.lang.ClassNotFoundException:javax.persistence.NamedStoredProcedureQuery – Hibernate错误
- hibernate session.save()没有反映在数据库中
- Hibernate集合与任何会话无关