gpt4 book ai didi

Hibernate 在编译时抛出 "QueryException",虽然 SQL 是有效的

转载 作者:行者123 更新时间:2023-12-04 06:07:46 27 4
gpt4 key购买 nike

我正面临一种奇怪的问题,不知道该往哪个方向解决;-)

我目前正在开发一个 Web 应用程序,用于使用 Hibernate 存储员工。

插入、删除、搜索;一切正常。

但!
每个员工都有一个由字符串列表表示的属性。

我想在此属性中搜索一个或两个或多个条目(这与员工的技能有关;

例如:我搜索“数据库”或“数据库,管理”,这将调出每个在他/她的技能组属性中具有“数据库”和“管理”的员工)。

如果我只搜索一个技能组,一切都会按预期进行。
但是当我尝试搜索两个或更多技能组时,Hibernate 不断抛出 QueryException ,虽然生成的SQL似乎是正确的(如果我直接在MySQL-Workbench中执行,我得到了预期的结果)。

异常(exception)情况如下:

org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:231)
org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:138)
org.hibernate.engine.query.HQLQueryPlan.(HQLQueryPlan.java:101)
org.hibernate.engine.query.HQLQueryPlan.(HQLQueryPlan.java:80)
org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:124)
org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:156)
org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:135)
org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1770)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

以下是我要生成的 SQL:
SELECT * 
FROM employee.new_view
WHERE idemployee IN (
SELECT idemployee
FROM employee.employee_skillgroups
WHERE idskillgroup = 'Sprachen')
AND idemployee IN (
SELECT idemployee
FROM employee.employee_skillgroups
WHERE idskillgroup = 'Services')

最佳答案

您可能需要使用 session.createSQLQuery(sqlString)不是 session.createQuery(sqlString)创建查询时。

关于Hibernate 在编译时抛出 "QueryException",虽然 SQL 是有效的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8154235/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com