如何使用JPA分层次地检索数据,其中多对多连接到同一个表

时间:2017-11-03 14:21:04

标签: java hibernate jpa many-to-many jpql

我有一个包含某些版本的表(tbl_versions)。版本之间的关系就像父母和孩子一样。所以我将关系放在另一个表(tbl_relations)中,该表有两个记录(parent_id,child_id),它与tbl_versions有很多关系。我想以树模型的形式检索数据,最后有一个树模型的json文件。有关如何使用JPQL选择和检索的任何建议?

1 个答案:

答案 0 :(得分:1)

分层查询不容易实现。一般来说,编写本机SQL是创建查询的最有效方法,因为在一天结束时,JPQL,HQL或其他任何内容将被转换为本机SQL并发送到数据库。然后,如果你不能用SQL编写你的查询(我只想一次),那么你就找不到用JPQL编写它的方法了。

但回到你的具体问题,像Oracle这样的数据库提供了像一样的连接这样的机制,这是JPQL不支持的,因为像MySQL这样的其他数据库不支持。

在这种情况下,我的建议是使用另外一列来保存记录之间的层次结构。该列仅作为元数据持有者工作,不仅描述两个记录之间的父子关系,还具有关于当前记录的祖先的信息。