2012-11-26 140 views
2

我的问题是关于如何在hql查询后解决“返回重复记录”问题。这里是一个例子:HQL查询返回重复记录

SELECT t0 FROM table0 t0, table1 t1, table2 t2 WHERE 

(((t0.a = 1 AND t0.b = 2 AND t0.c = 3) AND (t1.a = 4 AND t1.b = 5 AND t1.c = 6)) 

OR 

((t0.a = 7 AND t0.b = 8 AND t0.c = 9) AND (t1.a = 10 AND t1.b = 11 AND t1.c = 12) AND (t2.a = 13 AND t2.b = 14 AND t2.c = 15)) 

这个查询返回我正确的记录,但是有些记录返回多次。我想我知道原因。在“OR”之前(“WHERE”和“OR”之间),“table2 t2”没有被使用。 我如何避免重复记录?

谢谢

回答

0

如果粘贴的是SQL输出(不HQL),问题是,这种说法并不正确地联接表。

我所期望的表t0t1t2有某种相互之间的关系和查询应该包含WHERE t0.foo = t1.bar AND t1.baz=t2.bah。由于缺少这些信息,预计会有重复结果。