我有下表:
@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表:
@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:
SELECT * FROM DISABILITY a INNER JOIN DISABILITY_INFO b on a.DISABILITY_CD = b.DISABILITY_CD有谁能解释一下我是如何做到这一点的吗?
提前谢谢你。
发布于 2018-11-08 08:42:09
我想通了。需要多对一关联。我最初的想法是,一种残疾应该有一种描述,因此存在1:1的关系。
然而,在现实中,有多个残疾引用相同的描述,这意味着这实际上是一个多对一的关系!
@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}
https://stackoverflow.com/questions/53165206
复制相似问题