- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有两个如下所示的实体
@Data
@EqualsAndHashCode(callSuper = true)
@Entity
@Table(name = "foo")
@Audited
@AuditOverride(forClass = Auditable.class)
public class Foo extends Auditable implements Serializable {
@Id
@Column(name = "id")
private Long id;
//other fields
@ToString.Exclude
@EqualsAndHashCode.Exclude
@NotAudited
@OneToOne(mappedBy = "foo",
fetch = FetchType.LAZY,
cascade = CascadeType.ALL,
orphanRemoval = true,
optional = false)
private FooDetail fooDetail;
}
@Data
@Entity
@Table(name = "foo_detail")
public class FooDetail implements Serializable {
@Id
@Column(name = "id")
private Long id;
//other fields
@ToString.Exclude
@EqualsAndHashCode.Exclude
@MapsId
@JoinColumn(name = "id", referencedColumnName = "id", nullable = false)
@OneToOne(fetch = FetchType.LAZY)
private Foo foo;
}
我这样坚持Foo
Foo foo = new Foo();
foo.setId(1L);
FooDetail fooDetail = new FooDetail();
fooDetail.setId(1L);
foo.setFooDetail(fooDetail);
fooDetail.setFoo(foo);
fooRepository.save(i);
当save方法被调用时IdentifierGenerationException被抛出。它说“尝试从 null 一对一属性 [package.FooDetail.foo] 分配 id”。
更有趣的是,当我在父实体(Foo)上使用序列生成器时,它工作得很好。但如果我手动提供 id 则会引发此异常。
我做错了什么?
环境
最佳答案
您可以删除 FooDetail
中的 @JoinColumn
并且它会起作用,但 id 列将被命名为 foo_id
,您可能不希望那个。
要解决这个问题,您需要做的就是将 @MapsId
更改为 @MapsId("id")
以让它知道现在是 id 列(因为您正在使用 @JoinColumn
更改它)。
关于java - Hibernate - 一对一 IdentifierGenerationException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57598693/
我有两个如下所示的实体 @Data @EqualsAndHashCode(callSuper = true) @Entity @Table(name = "foo") @Audited @AuditO
我使用 MySQL、Hibernate、JPA 和 Spring,我的问题是我无法一对一关联更新子表;我正在使用外国策略。 当我使用 saveOrUpdate 并调用第一次方法时,我可以将实体保存到数
当我运行我的主类 (Runner) 程序时,出现以下异常: org.hibernate.id.IdentifierGenerationException: attempted to assign id
为了快速生产,我正在尝试使用 JBoss Tools 4.1 Hibernate 插件。但我在第一回合遇到了异常(exception)。 首先物理数据库表如下: describe Teams ;
我有以下表格: @Entity @Table(name = "CUSTOMER") public class Customers implements Serializable { priva
如何在BetRecordAgEBR中传递和设置ID?请帮助我:) 提前致谢。这是我遇到的唯一问题。 BetRecordAgEBR 类适用于使用 jpa 的数据库。 if ("GR".equals(da
在一种情况下,我无法将我的数据库域模型映射到程序实体,其中该实体本质上是一个连接表(一个句点),它结合了另外两个实体(一个时间段和一天)。另一个实体(一节课)然后引用这个周期实体,确定它何时发生。 当
我有两个实体,名为 Customer 和他的 Biling Address。关系是一对一的。每个客户都有一个账单地址。我想在保留客户时自动保留帐单地址。客户 ID 是客户实体的主键,也是地址实体中的主
我正在尝试将数据保存到数据库(保存到两个表中,使用一对一映射)。 我正在使用 Hibernate、Struts2 和 MySQL 数据库。 保存数据时显示以下异常: org.hibernate.id.
我正在尝试使用“一对一”共享主键映射实体,我收到了标题中提到的错误,我已经在这里检查了以前的帖子,但没有解决我的问题。下面是相关代码: 这是在 Localsession 工厂中设置的 hibernat
当我尝试使用 Spring Boot 2.1.6.RELEASE 和 Spring Data JPA 将用户对象保存到数据库时遇到问题。 用户对象和详细信息对象具有双向一对一关系。 明细的id与用户的
我知道以前可能有人问过这个问题,但我没有找到解决我的问题的方法。我有一个 varchar(20) 的categoryID 主键列,实体类由 id 属性映射到该主键列。添加数据时,它采用通过 UI 输入
虽然我已经手动设置了 ID,但我收到了上述错误,但我在这里没有使用自动生成的 key 。当我设置 key 并将对象传递给 entityManager.persist(obj); 它给出了上面的错误。任
我正在 Hibernate 中编写多对一程序,当我在 DAO 中编写以下代码时: sessionFactory = HibernateUtility.createSessionFactory();
我在表中有一个复合主键(表名称:billingdetails,主键:billId 和 productId)。当我调用 ../billingdetails/save 时,它会抛出 org.hiberna
我正在 eclipse 中开发 spring 4.0 和 hibernate 4.0.1 项目,并使用 oracle 作为数据库。如果我在数据库中进行一些更改,那么更改将不会受到 eclipse 的影
我多次尝试使用下面的代码在表中插入 id 值,但它总是抛出 org.hibernate.id.IdentifierGenerationException: 此类的 ids 必须在调用 save() 之
我正在 Java 中构建一个休息 Web 服务,使用 json 输入 hibernate 进行数据库连接,对于数据库,我使用 MS SQL Server 作为数据库。虽然我的数据库表 ID 列设置为自
我是一名优秀的程序员,十分优秀!