首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >复合键映射的Jpa部分

复合键映射的Jpa部分
EN

Stack Overflow用户
提问于 2018-11-06 11:02:58
回答 1查看 34关注 0票数 0

我有下表:

代码语言:javascript
复制
@Entity(name = 'STUDENT')
class Student {
   @Id    
   @Column(name = 'STUDENT_ID')
   String studentId

   @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy = "id.student")
   Set<Disabilities> disabilities = [] 
}


@Entity(name = 'STUDENT_DISABILITY')
class Disability {

    @EmbeddedId
    DisabilityId id

    @Nullable
    @Column(name = 'MOD_DT')
    LocalDateTime modifiedDate
}

@Embeddable
class DisabilityId implements Serializable {

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = 'STUDENT_ID')
    Student student

    @Column(name = 'DISABILITY_CD')
    String disabilityCode
}

这一切都很好,但我正在尝试将一个新的表'Disability_info‘表连接到'Disability’表。这是Disability_info表:

代码语言:javascript
复制
@Entity
@Table(name = 'DISABILITY_INFO')
class DisabilityInfo {

    @Id
    @Column(name = 'DISABILITY_CD')
    String id

    @Column(name = 'DISABILITY_NAME')
    String disabilityName

    @Column(name = 'DISABILITY_DESC')
    String disabilityDesc
}

我遇到的问题是,DisabilityInfo的主键是Disability类的组合键的一部分。我想要的是下面的sql:

代码语言:javascript
复制
SELECT * FROM DISABILITY a INNER JOIN DISABILITY_INFO b on a.DISABILITY_CD = b.DISABILITY_CD

有谁能解释一下我是如何做到这一点的吗?

提前谢谢你。

EN

回答 1

Stack Overflow用户

发布于 2018-11-08 08:42:09

我想通了。需要多对一关联。我最初的想法是,一种残疾应该有一种描述,因此存在1:1的关系。

然而,在现实中,有多个残疾引用相同的描述,这意味着这实际上是一个多对一的关系!

代码语言:javascript
复制
@Entity(name = 'STUDENT_DISABILITY')
class Disability {

@EmbeddedId
DisabilityId id

@Nullable
@Column(name = 'MOD_DT')
LocalDateTime modifiedDate


@ManyToOne
@JoinColumn(name = 'DISABILITY_ID, insertable = false, updatable = false)
DisabilityInfo disabilityInfo

}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53165206

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档