- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在关注 Entity-Snipped
@Entity
public class EntityWithNaturalId extends BaseEntity {
@NaturalId public String name;
private EntityWithNaturalId() {}
public EntityWithNaturalId(String name) { this.name = name; }
}
如果我尝试保留同名实体两次,我会收到以下错误(如预期的那样):
org.hibernate.exception.ConstraintViolationException: could not execute statement
Eindeutiger Index oder Primärschlüssel verletzt:
"_UNIQUEKEY_INDEX_6 ON PUBLIC.ENTITYWITHNATURALID(NAME) VALUES ('AA', 1)"
Unique index or primary key violation:
"_UNIQUEKEY_INDEX_6 ON PUBLIC.ENTITYWITHNATURALID(NAME) VALUES ('AA', 1)"
令我吃惊的是,如果我查看数据库中的表约束,我什么也看不到。不应该有唯一约束吗?
Postgres 9.3.2 hibernate 4.2.0
编辑:之前的这篇文章具有误导性,因为我减少了事实以简化情况。通过这样做,我使这篇文章不一致!!
@Vlad 是对的,但我意识到问题出在其他地方。
我想写的是还有其他几个使用@NaturalId 的实体。 Hibernate 尝试创建名称为 _UNIQUEKEY 的所有约束。 (缺少前缀)
只有第一个是真正创建的。所有其他的都抛出这个异常:
2014-11-10 13:18:10 ERROR org.hibernate.tool.hbm2ddl.SchemaExport - HHH000389: Unsuccessful: alter table AnotherEntityWithNaturalId add constraint _UniqueKey unique (pid)
2014-11-10 13:18:10 ERROR org.hibernate.tool.hbm2ddl.SchemaExport - ERROR: relation "_uniquekey" already exists
在我看来,唯一键名称构建不正确,可能是一个错误?
最佳答案
索引在那里:
ON PUBLIC.ENTITYWITHNATURALID(NAME)
异常明确指定约束违反异常。
在 PgAdmin 中,您应该在 Schemas - public - Tables - ENTITYWITHNATURALID - Constraints - _UNIQUEKEY_INDEX_6 下看到它
如果您没有看到它,请尝试运行此 SQL 命令:
ALTER TABLE ENTITYWITHNATURALID ADD CONSTRAINT _UNIQUEKEY_INDEX_6 UNIQUE (name);
你应该得到:
ERROR: relation "_UNIQUEKEY_INDEX_6" already exists
SQL state: 42P07
如果约束已经存在。
关于java - 为什么@NaturalId 不在数据库中创建唯一约束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26840911/
对于实体应用程序的生成 ID,使用触发器。因此,为了将生成的值分配给实体,我们使用如下构造: @Id @Column(name = "INVOICE_ID") @GeneratedValue(gene
我正在关注 Entity-Snipped @Entity public class EntityWithNaturalId extends BaseEntity { @NaturalId pu
我有以下实体(简短版本): 学生组: @Entity @Table(name = "group_of_students") @Inheritance(strategy = InheritanceTyp
有一些关于自然标识符的文章,我在那里读到自然标识符促进了对 hibernate 中最常用字段的查找。 In this post ,他们描述了自然标识符对于使用特定字段查找任何数据要好得多。他们还描述了
使用 Hibernate 的@NaturalId 查找对象有什么优势吗? 我担心 Hibernate 使用 @NaturalId 执行两个查询来获取对象这一事实。 第一个查询只是为了获取 id,第二个
我使用 Hibernate 4.1。 我在 Sanad 中有一个实体 Sanad 和一个嵌入式类 Gas。 @Entity public class Sanad{ @Id private in
在 Hibernate 中,我可以使用 @NaturalId 创建一个唯一的键关于实体的几个属性。 是否有 JPA 等效注释,它是 javax.persistence 的一部分? 最佳答案 我通常做的
已经多次讨论过如何为Entity重新定义equals/hashCode。 我的问题是需要使用 equals 中的所有字段。考虑两种情况。 当我们使用等于的所有字段时: @Entity public c
我有一些允许我创建关联类的 Hibernate/JPA 注释(老实说仍然不知道区别)。此类将两个相关的项目组合成一个对象。我最初使用的是 @JoinTable,但意识到我需要更多具有关联的元数据,因此
将 spring-boot 与 JPA 结合使用:尝试更新表。但当我更新 NaturalId 字段值时出现错误。 错误:嵌套异常为 org.hibernate.HibernateException:实
我是一名优秀的程序员,十分优秀!