【发布时间】:2021-01-16 08:54:57
【问题描述】:
我将休眠 5.3.11 与 SpringDataJpa 和 PostgreSQL 一起使用,并且在尝试更新复杂实体 ClassC。
- ClassC 是 @OneToMany 和 ClassA
- ClassA 是 @OneToOne 和 ClassB。
- 在调用更新方法之前,所有实体之间都有链接。
- ClassC 是父实体,级联到 ClassA,ClassA 级联到 ClassB。
- 问题似乎只与 AB 关系有关。
- show-sql 告诉我 ClassA 可以正常运行,但似乎由于某种原因它在休眠状态的某处失去了与 ClassB 的链接。
- 第一次持久化实体可以正常工作。该错误仅在更新时出现。而且我什至不更新 ClassB 和 ClassA 的现有实体,而是用新实体替换它们。
关系:
Java 实体:
@Data
@Entity
@EqualsAndHashCode(exclude = {"classA"})
public class ClassA {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne
@JoinColumn(name = "classC_id")
private ClassC classC;
@OneToOne(mappedBy = "classA", cascade = CascadeType.ALL)
private ClassB classB;
}
@Data
@Entity
public class ClassB {
@Id
private Long id;
@OneToOne
@JoinColumn(name = "id")
@MapsId
private ClassA classA;
}
【问题讨论】:
标签: java spring postgresql hibernate