Hibernate创建没有关系表的关系

Posted

技术标签:

【中文标题】Hibernate创建没有关系表的关系【英文标题】:Hibernate create relation without relational table 【发布时间】:2021-05-28 22:11:43 【问题描述】:

是否可以在不使用映射它们的另一个表的情况下映射休眠实体?

当我在 2 个实体之间创建 @OneToMany 和 @ManyToOne 关系时,hibernate 总是在数据库中创建另一个表来映射关系,我想直接使用映射实体中的列来映射 2 个实体,如下所示:

“InstalledApp”实体:

@OneToMany (fetch = FetchType.EAGER, targetEntity=InstalledAppPort.class, mappedBy = "id")
private List<InstalledAppPort> ports;

“InstalledAppPort”实体:

@ManyToOne (targetEntity=InstalledApp.class, fetch=FetchType.LAZY)
@JoinColumn(name = "iappId")
private InstalledApp iapp;

使用上面的代码时,列表总是空的,我不知道为什么。从技术上讲,这种映射应该有效,但事实并非如此。没有抛出异常。

【问题讨论】:

【参考方案1】:

通过使用解决:

@OneToMany (fetch = FetchType.EAGER, targetEntity=InstalledAppPort.class)
@JoinColumn(name = "iappId", referencedColumnName = "id")
private List<InstalledAppPort> ports;

【讨论】:

以上是关于Hibernate创建没有关系表的关系的主要内容,如果未能解决你的问题,请参考以下文章

Hibernate:n-n关联关系

Hibernate多对多关系映射(建表)

Hibernate的多对多关系

Hibernate的多对多关联关系

Hibernate的一对一关联关系

学习总结-hibernate设计表