java - 如何使用 Hibernate 在两个实体(不相关的实体)之间进行联接

标签 java sql hibernate

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

屏幕属性: 屏幕ID 楼主,...

最喜欢的屏幕: 屏幕ID 屏幕:实体本身 以及与其他表相关的其他字段。

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

从 id 所在的仪表板中选择 *(从最喜欢的仪表板中选择 id)

有什么办法可以使用Hibernate来解决这个问题吗?

谢谢

最佳答案

我相信这是您的查询:

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
}

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

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

关于java - 如何使用 Hibernate 在两个实体(不相关的实体)之间进行联接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56061223/

相关文章:

java - Hibernate - 从本地表外键中选择

java - 根据映射到类的 yaml 中的条件查找 "row"字段

java - 使用 JAVAFx 更新和删除不适用于 mysql 数据库

mysql - 如何在另一个存储过程中使用mysql存储过程结果集

mysql - 获取不在列表中的mySQL记录

SQL 更新错误。 FK 冲突

Java/Spring 库服务异步

java - pom.xml(Maven 多模块项目)中的 <sonar.exclusions> 在本地工作但不在公司服务器上工作

hibernate - 不区分大小写的限制

hibernate - Projection spring data jpa(spring boot)中的 NonUniqueResultException