如何解决通过外键联接多个表
我需要使用JPA将多个表连接到一个对象中。每个辅助表都与主表中单独的外键关联。
我尝试过的简化示例:
@Entity
@Table(name = "t_a")
@SecondaryTables(
SecondaryTable(name = "t_b",pkJoinColumns = [PrimaryKeyJoinColumn(name = "b_id",referencedColumnName = "b_id")]),SecondaryTable(name = "t_c",pkJoinColumns = [PrimaryKeyJoinColumn(name = "c_id",referencedColumnName = "c_id")])
)
class A{
@Id
@Column(name = "a_id")
var aId: Int? = null
@Column(name = "b_id")
var bId: Int? = null
@Column(name = "c_id")
var cId: Int? = null
@Column(name = "name")
var name: String? = null
@Column(name = "name",table = "t_b")
var bName: String? = null
@Column(name = "name",table = "t_c")
var cName: String? = null
@Column(name = "value",table = "t_c")
var cValue: Int? = null
}
具有更多的字段和表,尝试使用@Formula
或多个@Entity
类充其量是混乱且效率低下的。
很明显,这种方法以org.hibernate.AnnotationException: SecondaryTable JoinColumn cannot reference a non primary key
失败。
为便于记录,我为简化示例尝试复制的SQL是:
SELECT t_a.name,t_b.name,t_c.name,t_c.value FROM t_a
INNER JOIN t_b ON t_a.b_id = t_b.b_id
INNER JOIN t_c ON t_a.c_id = t_c.c_id
WHERE t_a.a_id = ?;
有什么干净的方法可以做到这一点吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。