java - 我是否在组合键中正确定义了多对一?

标签 java hibernate kotlin jpa

我将实体定义如下:

@Entity
data class Environment(
    @EmbeddedId
    var key: EnvStageId? = null,
    var value: String = ""

)


@Embeddable
class EnvStageId(
    @ManyToOne
    var stage: Stage? = null,
    var key: String = ""
) : Serializable


@Entity
data class Stage(
    @field:Id
    var env: String = "",
    var description: String = ""

)

我使用了Hibernate,它会按预期生成表。问题是,我是否正确定义了ManyToOne还是错过了什么?关于本this教程,我必须在一侧定义ManyToOne,在另一侧定义OneToMany

最佳答案

您不必来定义关系的另一面。仅当希望可以从双方访问关系时,才需要这样做。
如果要这样做,则必须执行以下操作。我不熟悉@Embeddable,但是我想它应该与此类似:

@Entity
data class Environment(
    @OneToMany(mappedBy = "environment", cascade = CascadeType.ALL)
    var stages: List<Stage>
)

@Entity
data class Stage(
    @ManyToOne
    var environment: Environment
)

关于java - 我是否在组合键中正确定义了多对一?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64342851/

相关文章:

android - Kotlin CoroutineScope 初始化取决于带有自定义 getter 的 CoroutineContext

java - 从单元格中检索 JTable 的行号

java - 代码没有输入正确的if语句

mysql - Hibernate/MySQL 基于唯一键连接表

java - 多对一关系的无限递归错误

kotlin - Kotlin:检查是否为空并分配?

带有replaceFirst方法的Java循环

java - 更改 iText 中复选框字段的外观

具有不同结果的 Hibernate/Gorm 查询和非主键上的 JOIN

javafx - 如何在 GSON 中反序列化 Kotlin 代表