完全加入Hibernate HQL

时间:2013-02-22 09:30:30

标签: java hibernate join hql

我正在尝试使用HQL

在两个表的特定列上使用FULL JOIN
List<B> expiredMacs = getHibernateTemplate()
                .find("from B b join A a where b.type != 'USER' and (b.id != a.id or (b.name == a.name and b.value != a.value))");

但是它会抛出错误的意外标记:=第1行,第325列附近

知道出了什么问题吗?

SQL中的

SELECT B.* FROM  B b, A a WHERE b.type != 'USER' AND (b.id != a.id or (b.name == a.name and b.value != a.value))

2 个答案:

答案 0 :(得分:1)

据我所知,==是不允许的,您应该使用=。请参阅HQL documentation

允许使用

!=,但最好使用<>,因为它更接近标准SQL。

答案 1 :(得分:1)

最后我找到了解决方案

List<B> expiredMacs = getHibernateTemplate()
            .find(SELECT b from B b, A a where b.type <> 'USER' and (b.id <> a.id or (b.name == a.name and b.value <> a.value)));