我面临一种奇怪的问题,不知道要去哪个方向解决它;-)
我目前正在开发一个使用Hibernate存储员工的Web应用程序。
插入,删除,搜索;一切正常。
但是!
每个员工都有一个由字符串列表表示的属性。
我想在此属性中搜索一个或两个或更多条目(它与员工的技能有关;
例如:我搜索“数据库”或“数据库,管理”,这将导致每个员工在他/她的skillGroups-property中拥有“数据库”和“管理”。
如果我只搜索一个技能组,一切都按预期工作。
但是当我尝试搜索两个或更多技能组时,Hibernate继续抛出QueryException
,尽管生成的SQL似乎是正确的(如果我直接在MySQL-Workbench中执行它,我得到了预期的结果) 。
例外情况如下:
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')
答案 0 :(得分:3)
创建查询时,您可能需要使用session.createSQLQuery(sqlString)
而不是session.createQuery(sqlString)
。