hibernate关联表查询报错org.springframework.orm.hibernate3.HibernateQuery illegal syntax near collection: id

数据访问层的代码还简单就是两张表的关联查询:

public OrganNode[] getOrganNodesByUserId(long userId) {
		
	String Hql="select u.organNodes from User u where u.id=? and u.removed=0";
List result = findByHQL(hql, new Long(userId));
return (OrganNode[]) result.toArray(new OrganNode[result.size()]);

	}

table user
table user_oragnnode(user_id,organnode_id)//关联表
table organnode

注:u.organNodes为实体User类中的一个set集合属性

我的目标是通过user_id获得organnode的集合数组。

前台访问后后台报了以下错误:
org.springframework.orm.hibernate3.HibernateQueryException: 
illegal syntax near collection: id [select user.organNodes from com.wondersgroup.framework.security.bo.SecurityUser user where user.id=?  and user.removed = 0]; 
nested exception is org.hibernate.QueryException:
illegal syntax near collection: id [select user.organNodes from com.wondersgroup.framework.security.bo.SecurityUser user where user.id=?  and user.removed = 0]

看了网上很多中造成的原因但都没能解决我的问题,最后在细微之处发现了个恶心的问题

修改application-hibernate.xml配置文件 原文件:

<prop key="hibernate.query.factory_class">org.hibernate.hql.classic.ClassicQueryTranslatorFactory</prop>
 
修改后:
<propkey="hibernate.query.factory_class">org.hibernate.hql.ast.ASTQueryTranslatorFactory</prop>
造成的原因就是hibernate查询选择器版本过低才使JAR包里的类没有加载到,在网上看还没有这种解决方式,现在解决了贴给大家分享少走些弯路。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值