Java HIbernate HQL意外令牌
我有以下Hibernate查询:Java HIbernate HQL意外令牌,java,hibernate,hsqldb,Java,Hibernate,Hsqldb,我有以下Hibernate查询: String HSQL = "from Page as p " + "where not exists (from Link as l where l.dealId = p.id) " + "and p.userId = :userId"; return (List<Deal>) sessionFactory.getCurrentSession() .createQuery(HSQL) .setParameter("userId",
String HSQL = "from Page as p "
+ "where not exists (from Link as l where l.dealId = p.id) "
+ "and p.userId = :userId";
return (List<Deal>) sessionFactory.getCurrentSession()
.createQuery(HSQL)
.setParameter("userId", userId)
.list();
我的Hibernate版本是5.4.1
查询有什么问题?我认为在您的实体中,
dealId
属于Page
类型,而不是Long
类型,因此您可以使用:
"where not exists (from Link as l where l.dealId = p) "
^^^^^^^^^^^^
据我所知,在HQL查询中声明别名之前,没有必要将
用作
。dealId的类型是什么
您可以分享您的实体吗?实际上,SELECT
在HQL中应该是可选的,至少对于外部查询是这样。请看这里:Hi@TimBiegeleisen,我同意这是可选的,你的问题中有一部分我不明白。对不起,你能澄清一下吗:)谢谢,这让我找到了解决办法。实体没有dealId属性,但交易本身具有。所以如果我这样做了,它就开始工作了。
"where not exists (from Link as l where l.dealId = p) "
^^^^^^^^^^^^