繁体   English   中英

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

[英]Hibernate unidirectional oneToMany FK 0 instead of true 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. 创建一个Version对象
  2. 创建一个更改日志对象
  3. 创建一个列表,并将更改日志对象从2.绑定到该列表
  4. 将对象从3设置为Version对象的列表
  5. 从我注入的版本库中调用save()方法并保存版本对象
  6. 将版本插入到版本表中,并将更改日志插入到带有FK到版本的更改日志版本中。

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

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

我找到了解决我的问题的解决方案:为了将版本引用到更改日志中,我将版本的主键用作更改日志的外键。 我的@oneToMany映射工作正常。 我的更改日志实体包含fk,也导致了我的问题。 fk不应属于您要由所有者类引用的实体(子代)的一部分。 删除fk后,一切正常。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM