我的Nodes
有List<Node>
个孩子Nodes
。遵循JPA约定,我最终得到以下表格:
t_node
具有id
,name
和department
t_node_t_node
具有t_node_id
和childNodes_id
我想返回父节点的子节点列表。如何编写entitymanager
查询来执行此操作?
我最接近的是:
List<Node> childNodes = (List<Node>) entityManager.createQuery("select n from Node n JOIN n.t_node_t_node t where n.id = " + parent_id).getResultList();
返回异常:Could not resolve property t_node_t_node
答案 0 :(得分:1)
数据库列t_node_t_node
不能在JPQL查询中使用。 JPQL查询操作实体及其持久属性,而不是数据库表和列。
可能您的实体大致如下:
@Entity
public class Node {
@Id private Long id;
@ManyToOne
Node parent;
@OneToMany(mappedBy = "parent")
private List<Node> nodes;
...
}
当给出父节点的id时,子节点可以是如下查询:
Long parentId = 1L;
Query q = em.createQuery("SELECT n FROM Node n WHERE n.parent.id = :parentId");
q.setParameter("parentId", parentId);
List<Node> childNodes = q.getResultList();