【问题标题】:Spring/JPA twice uniderectional not working, because of @JoinColumn(nullable = false)由于@JoinColumn(nullable = false),Spring/JPA 两次单向不起作用
【发布时间】:2021-09-14 05:46:33
【问题描述】:

我遇到了单向映射问题,需要帮助。

我有 2 个具有相同单向映射的实体。

第一个:

@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
@JoinColumn(name = "massnahme_id", nullable = false)
private Set<VerortungDAO> verortungen = new LinkedHashSet<>();

第二个:

@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
@JoinColumn(name = "massnahmen_verbund_id", nullable = false)
private Set<VerortungDAO> verortungen = new LinkedHashSet<>();

如果我尝试保存一个实体,hibernate 会因为第二个实体定义(非空)而引发异常。

org.hibernate.PropertyValueException:非空属性引用 空值或瞬态值

如果我将 JoinColumn 更改为 nullable = true,则单向映射不起作用并且列表不会保存在 DB 中。 我该怎么做才能让它发挥作用?

【问题讨论】:

    标签: spring hibernate jpa entity one-to-many


    【解决方案1】:

    使关联成为双向并在VerortungDAO 中映射一对一关联,或者如果您不希望这样做,至少映射 FK 列。如果您将其映射为双向,请使用@OneToMany(mappedBy = "...")。无论哪种方式,您都必须在 VerortungDAO 对象上初始化两对一关联或 FK 列。

    PS:实体不是 DAO(数据访问对象),因此命名 xxDAO 对实体来说非常混乱。

    【讨论】:

      猜你喜欢
      • 2012-01-06
      • 2012-07-11
      • 1970-01-01
      • 2021-07-27
      • 1970-01-01
      • 2011-02-23
      • 1970-01-01
      • 2017-05-29
      • 1970-01-01
      相关资源
      最近更新 更多