Code Bye

org.hibernate.exception.GenericJDBCException

最近做个项目遇到个问题,求高手们指点下,感谢!
Service实现类如下代码片段:
@Override
public List<Department> findChildren(Long parentId) {
return sessionFactory.getCurrentSession()
.createSQLQuery(“FROM Department d WHERE d.parent.id=?”)
.setParameter(0, parentId).list();
}

@Override
public List<Department> findTopList() {
return sessionFactory.getCurrentSession()
.createSQLQuery(“FROM Department d WHERE d.parent IS NULL”)
.list();
}
异常如下:
org.hibernate.exception.GenericJDBCException: could not execute query 
    org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:140)
    org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:128)
    org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
    org.hibernate.loader.Loader.doList(Loader.java:2536)
    org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2276)
    org.hibernate.loader.Loader.list(Loader.java:2271)
    org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:316)
    org.hibernate.impl.SessionImpl.listCustomQuery(SessionImpl.java:1842)
    org.hibernate.impl.AbstractSessionImpl.list(AbstractSessionImpl.java:165)
    org.hibernate.impl.SQLQueryImpl.list(SQLQueryImpl.java:157)

org.firebirdsql.jdbc.FBSQLException: GDS Exception. 335544569. Dynamic SQL Error SQL error code = -104 Token unknown – line 1, column 1 FROM 
说是执行HQL语句“FROM Department d WHERE d.parent IS NULL”出错

public List<Department> findChildren(Long parentId) {
return sessionFactory.getCurrentSession()
.createSQLQuery(“FROM Department d WHERE d.parent.id=?”)
.setParameter(0, parentId).list();
}

setParameter(0, parentId)这个0有问题,HQL中的?号是从1开始算的,不是从0开始算的

引用 1 楼 yoyobboy112233 的回复:

public List<Department> findChildren(Long parentId) {
return sessionFactory.getCurrentSession()
.createSQLQuery(“FROM Department d WHERE d.parent.id=?”)
.setParameter(0, parentId).list();
}
setParameter(0, parentId)这个0有问题,HQL中的?号是从1开始算的,不是从0开始算的

这段代码未执行,执行HQL语句“FROM Department d WHERE d.parent IS NULL”出错,另外HQL中的?号是从0开始算的吧?


20分
这段代码:createSQLQuery(“FROM Department d WHERE d.parent IS NULL”)..  是执行的原生 SQL查询. 
应该要加上 select *   或者你看下其他sql语法是否错误..

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明org.hibernate.exception.GenericJDBCException