gpt4 book ai didi

Java JPA Hibernate保存不插入引用的实体

转载 作者:太空宇宙 更新时间:2023-11-04 10:37:11 24 4
gpt4 key购买 nike

我有以下两门类(class):

@Entity
@Table(name = "TableA")
public class EntityA
{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "Id")
private final Integer id = null;

@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "BId")
private EntityB b;

public EntityA(EntityB b)
{
this.b = b;
}
}

@Entity
@Table(name = "TableB")
public class EntityB
{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "Id")
private final Integer id = null;

@OneToOne(mappedBy = "b")
private final EntityA a = null;
}

当我这样做的时候

session.save(new EntityA(new EntityB());

数据库仅在TableA中插入一条记录,并将引用TableB的列保留为NULL

如果我先插入 b,然后插入 a,它可以工作,但它也应该适用于单个调用。

其他问题/答案提到注释不正确,但我认为我的解决方案和提供的解决方案没有区别。

我还尝试在两个 @OneToOne 注释上添加 CascadeType.PERSIST,但这也不起作用。

最佳答案

在jpa中,默认级联设置为NONE ...因此默认情况下不会插入(持久化)关系中的实体(在您的情况下是B)...您需要用注释来注释关系 @OneToOne(fetch = FetchType.LAZY,cascade = CascadeType.PERSIST)

关于Java JPA Hibernate保存不插入引用的实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49338009/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com