Java 获取org.hibernate.hql.ast.QuerySyntaxException,尽管它在sql server中运行良好?

Java 获取org.hibernate.hql.ast.QuerySyntaxException,尽管它在sql server中运行良好?,java,hibernate,Java,Hibernate,我有下面的代码片段。它在第3行抛出异常,但查询在ManagementStudio(SQLServer2005)中运行良好 String query=“select*from user where userId=“+profileId +“和spaceName=”+spaceName+”; Session Session=HibernateUtil.getSession(); List personDetailsData=新数组列表( session.createQuery(query.list(

我有下面的代码片段。它在第3行抛出异常,但查询在ManagementStudio(SQLServer2005)中运行良好

String query=“select*from user where userId=“+profileId
+“和spaceName=”+spaceName+”;
Session Session=HibernateUtil.getSession();
List personDetailsData=新数组列表(
session.createQuery(query.list())//第3行
这是个例外

org.hibernate.hql.ast.QuerySyntaxException:意外标记:*近 第1行第8列[从userId=216和 spaceName='DIG']


当查询在management sudio中运行良好时,我无法找出它的问题所在?

它是本机查询,而不是hql。 如果已将表字段映射到所需的类字段

session.createSQLQuery(query, PersonDetailsData.class).list();
或创建hql类型查询-

select p from PersonDetailData p where p.userId = :userId and p.spaceName =:spaceName

并在查询中使用参数,而不是直接值。

这是本机查询,而不是hql。 如果已将表字段映射到所需的类字段

session.createSQLQuery(query, PersonDetailsData.class).list();
或创建hql类型查询-

select p from PersonDetailData p where p.userId = :userId and p.spaceName =:spaceName

并在查询中使用参数,而不是直接值。

当您使用sql查询时,您必须创建一个sql查询,例如

sess.createSQLQuery("SELECT * FROM CATS").list();

使用sql查询时,请参阅源代码,因此必须创建一个sql查询,如

sess.createSQLQuery("SELECT * FROM CATS").list();

请参阅源文件

谢谢。我还有一个查询,即如果此查询未返回任何数据,将查询。列表将为null或不为null。如果它不为null,那么如果我使用personDetailsData.get(0),它将为null或不为null。(因为我必须基于null或非null值执行一些操作)如果调用list(),它不应该返回null,但是对于单个对象“getSingleResult()”有一个特殊的方法,如果我记得很清楚,它在没有结果时抛出异常。感谢DainusI,我还有一个查询,即如果这个查询不返回任何数据,will query.list将为null或不为null。如果它不为null,那么如果我使用personDetailsData.get(0),它将为null或不为null。(因为我必须基于null或not null值执行一些操作)如果调用list(),它不应该返回null,但是对于单个对象“getSingleResult()”,有一个特殊的方法,如果我记得很清楚,它在没有结果时抛出异常。