Hibernate单向oneToMany FK 0而不是真正的ID

时间:2018-05-14 20:07:01

标签: java hibernate spring-boot jpa

我现在正在使用hibernate和oneToMany关系。 我希望有人可以帮助我...

我有两个实体:一个版本和一个更改日志。版本有一个更改日志列表。

版本实体:

@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.中的对象将列表设置为Version对象
  5. 从我注入的版本的crud repo中调用save()方法并保存版本对象
  6. 将版本插入版本表,更改日志将插入到更改日志版本中,并将FK插入版本。
  7. 到目前为止工作正常只有我的FK不会在更改Log对象中更新(参见附件)

    While debuging the mentioned flow -> FK remains 0 even the IDS are correctly set

1 个答案:

答案 0 :(得分:0)

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