首页 > 解决方案 > 如何在两个实体(不相关的实体)之间使用 Hibernate 进行连接

问题描述

我在 Java 中有两个实体:Screen 和 FavoriteScreen,

屏幕属性:screenId 所有者,...

FavoriteScreen:screenId Screen:实体本身和其他表相关的其他字段。

我的问题是我想获得所有使用 Hibernate Join 最喜欢的屏幕。我用这样的 SQL 语句解决了这个问题:

从 id 所在的仪表板中选择 *(从收藏的仪表板中选择 id)

有什么方法可以使用 Hibernate 解决它。

谢谢

标签: javasqlhibernate

解决方案


我相信这是你的查询:

select * from the Screen where id in (select screen_id from the FavoriteScreen)

如果是这样,您可以在 FavoriteScreen 和 Screen 之间添加 OneToOne 关系。然后从 FavoriteScreen 中获取 Screen。

@Entity
public class FavoriteScreen {
   ... attributes...

   @OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
   @JoinColumn(name = "screen_id")
   Screen screen
}

它将在 Screen 和 FavoriteScreen 之间创建一对一的关联。您可以使用获取屏幕。

entityManager.createQuery("Select FS.screen From FavoriteScreen FS ").getResultList()

推荐阅读