java - 如何使用 JPA 多对多联接到同一个表来分层检索数据

标签 java hibernate jpa many-to-many jpql

我有一个包含一些版本的表(tbl_versions)。版本之间的关系就像父子关系。所以我将关系放在另一个表(tbl_relations)中,该表有两条记录(parent_id,child_id),并且与 tbl_versions 具有多对多关系。我想以树模型的形式检索数据,最后有一个位于树模型中的 json 文件。关于如何使用 JPQL 选择和检索有什么建议吗?

最佳答案

分层查询不容易实现。一般来说,编写 native SQL 是创建查询的最强大方法,因为到一天结束时,JPQL、HQL 或其他任何内容都将被转换为 native SQL 并发送到数据库。然后,如果您无法使用 SQL 编写查询(我的意思是一次),那么您将找不到一种通过 JPQL 编写查询的方法。

但是回到你的具体问题,像 Oracle 这样的数据库提供了像 start with connect by 这样的机制,JPQL 不支持这种机制,因为 MySQL 等其他数据库不支持。

在这种情况下,我的建议是再使用一列来保存记录之间的层次结构。该列充当元数据持有者,它不仅描述两个记录之间的父子关系,而且还包含有关当前记录的祖先的信息。

关于java - 如何使用 JPA 多对多联接到同一个表来分层检索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47097987/

相关文章:

java - 在 hibernate 状态下从集合中删除实体

java - Hibernate 在 JTA 事务期间从池中获取多个 JDBC 连接

jpa - 修复指定PU时的 "Could not resolve a persistence unit..."错误,发现

sql - Spring Data jpa插入多个表以避免锁表

java.lang.NoClassDefFoundError : Failed resolution of: Lretrofit2/Retrofit$Builder;

java - 从包装中读取声音的路径

java - 如何用jpa映射抽象集合?

java - 客户端 session

java - 通过 hibernate.hbm2ddl.auto 创建具有较长文本字段的表

java - 来自属性文件的 Persistence.xml 字段值