当前位置: 首页 > 面试题库 >

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

赫连开畅
2023-03-14
问题内容

假设我有“主题”表

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没有任何效果。



 类似资料:
  • 问题内容: 即使将属性设置为,我仍然会插入重复的条目。 我设置了使用定期在。我没有用表 问题答案: 我没有使用JPA创建表 然后,您应该在语句中向表中添加唯一约束,例如,如果您使用的是MySQL:

  • @UniqueConstraint和@Column(unique = true)有什么区别? 例如: 和

  • 问题内容: @UniqueConstraint 和 @Column(unique = true)有 什么区别? 例如: 和 问题答案: 如前所述,是仅当单个字段时的快捷方式。 从您给出的示例来看,两者之间存在巨大差异。 此代码意味着和都必须是唯一的,但必须分开。这意味着,例如,如果您有一个 mask.id = 1 的记录,并尝试插入另一个 mask.id = 1的 记录, 则会 出现错误,因为该列

  • 此函数返回输入数组中的唯一元素数组。 该函数可以返回唯一值数组的数组和关联索引数组。 索引的性质取决于函数调用中返回参数的类型。 numpy.unique(arr, return_index, return_inverse, return_counts) Where, Sr.No. 参数和描述 1 arr 输入数组。 如果不是一维阵列,将会变平 2 return_index 如果为True,则返

  • UNIQUE The codebase for Uncertainty-aware blind image quality assessment in the laboratory and wild (TIP2021)and Learning to blindly assess image quality in the laboratory and wild (ICIP2020) Prequisi

  • 问题内容: 这来自django的文档: 领域独特 如果为True,则此字段在整个表中必须是唯一的。 这是在数据库级别并通过模型验证强制执行的。如果尝试在唯一字段中保存具有重复值的模型,则模型的save()方法将引发django .db.IntegrityError。 这是我的models.py 这是我的manage.py sqlall(我运行了syncdb) 但是,在manage.py shell