休眠单向 oneToMany FK 0 而不是真实 ID



我现在正在与冬眠和oneToMany关系斗争了几天。 我希望有人可以帮助我...

我有 2 个主题:一个版本和一个更改日志。版本具有更改日志列表。

版本实体:

@Table(name="change_log_version")
@Entity
public class ChangeLogVersionEntity {
...
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinColumn(name= "version_id")
public List<ChangeLogEntity> changeLogEntities = new ArrayList<>();
...

更改日志实体:

@Table(name="change_log")
@Entity
public class ChangeLogEntity {
...
@Column(name="version_id")
private long versionId;
...

现在我能够:

  1. 创建版本对象
  2. 创建更改日志对象
  3. 创建一个列表并宣布更改日志对象从 2. 到列表
  4. 将包含对象从 3. 到版本对象的列表设置
  5. 从我注入的版本 crud 存储库调用 save(( 方法并保存版本对象
  6. 版本将插入到
  7. 版本表中,更改日志将插入到具有 FK 到版本的更改日志版本中。

到目前为止工作正常,只有我的FK不会在更改日志对象中更新(见附件(

在调试上述流时 ->即使 IDS 设置正确,FK 仍为 0。

我找到了解决问题的方法: 为了将版本引用到更改日志,我使用版本的主键作为更改日志的外键。我的@oneToMany映射工作正常。 我的更改日志实体也包含导致我问题的 fk。fk 不应是所有者类要引用的实体(子实体(的一部分。删除fk后,每个工作都很好。

最新更新