查询在Postgres中不起作用

时间:2011-08-05 08:58:14

标签: java hibernate postgresql

您好我想构建一个查询

我的表结构是

Nodeid         Nodename   Nodetype Parentid   nodedes
1              Node1         A      0         hghg
2              Node2         B      1         kjhjkh
3              Node3         A      0         gfhgfh
4              Node4         B      1         kjhjkh

如果nodettype是B,那么节点的节点名应该与其parentid的节点名称连接,如NOde1-NOde4或NOde1-node2

我正在使用hibernate,以及如何将此查询转换为hibernate查询 我正在使用postgres 我有一个查询,但它只能运行一个记录..它不是多行的

SELECT nodename || '--' || (select nodename from table1 where nodetype='B')
FROM table1
WHERE nodeid in (SELECT table1.parentid FROM  table1  WHERE table1.nodetype = 'B')

任何人都可以帮忙

2 个答案:

答案 0 :(得分:1)

SELECT a.nodename||'--'||b.nodename 
FROM table1 a, table1 b
WHERE b.nodetype='B' 
AND a.nodeid = b.parentid;

答案 1 :(得分:0)

这是一个HQL查询,返回类型B的节点的所有名称及其父节点的名称。连接不应由查询完成。您应该在演示逻辑中执行此操作。

select node.name, parentNode.name from Node node
inner join node.parent parentNode
where node.type = 'B'

此查询返回Object[]的列表。每个Object[]包含节点nalme作为其第一个元素,父节点的名称作为其第二个元素。