2

我正在尝试使用 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))
4

2 回答 2

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)));
于 2013-02-22T09:49:00.233 回答
1

据我所知,==是不允许的,你应该使用=. 请参阅HQL 文档

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

于 2013-02-22T09:35:05.743 回答