java - 如何在两个实体(不相关的实体)之间使用 Hibernate 进行连接
问题描述
我在 Java 中有两个实体:Screen 和 FavoriteScreen,
屏幕属性:screenId 所有者,...
FavoriteScreen:screenId Screen:实体本身和其他表相关的其他字段。
我的问题是我想获得所有使用 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
}
它将在 Screen 和 FavoriteScreen 之间创建一对一的关联。您可以使用获取屏幕。
entityManager.createQuery("Select FS.screen From FavoriteScreen FS ").getResultList()
推荐阅读
- python - 在进行第一次配置分配后覆盖应用程序配置是否安全(并且它不会否定 facotry 模式的好处)?
- docker - Docker compose:服务无法相互连接
- docker - ModuleNotFoundError:没有名为“maskrcnn_benchmark”的模块
- android - 通过 Android 运行时以编程方式执行的命令行“top”命令每次返回相同的 CPU 使用数据
- typescript - 如何在 Firebase Cloud Functions 上拆分长执行时间的函数
- android - 防止 Android Activity 自行启动
- typescript - 函数中的泛型不检查 Typescript 中的参数类型
- javascript - 如何在给定的括号字符串中查找节点和级别?
- javascript - 异步/等待查找文档 ID,然后查找单独的文档集
- spring - Spring JPA 测试 - InvalidDataAccessResourceUsageException