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

标签 java hibernate jpa

假设我有“主题”表

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”,我都会遇到类似的行为(同样的异常(exception)。)很明显,除非伸出援手,否则 JPA 实现实际上无法做任何事情到数据库进行检查。

它的真正用例是什么?

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

最佳答案

@Column 中的

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

关于java - JPA - @Column (unique=true) - 拥有 'unique' 属性的真正意义是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30460596/

相关文章:

java - 谷歌健身 : What is DataType Floor of Google Fit.

mysql - 未能延迟初始化角色集合 : <Relation Class>could not initialize proxy - no Session

java - 什么时候拥有 Hibernate 二级缓存的 CPU yield 超过初始命中

java - 我可以将 'ON DELETE CASCADE' 添加到 Hibernate 管理的表中吗?

java - Eclipse 自定义热键 - 将当前行打印到标准输出

java - 仅复制 3D 数组的前 2 个维度

database - 使用示例数据填充 postgres 数据库

java - EclipseLink - 带条件查询的子查询 (JPA)

java - Hibernate jpa子对象不保存

java - 如何清除控制台?