急问:Hibernate调用HibernateDaoSupport中的findByNamedQuery(hql)出错?

wingoal 2007-01-13 12:07:57
hbm.xml:
<hibernate-mapping>
<class name="com.esapro.icats.framework.pojo.Parameters" table="parameters" >
<id name="parametersid" type="java.lang.Integer">
<column name="parametersid" />
<generator class="native" />
</id>
<property name="paramtype" type="java.lang.String">
<column name="paramtype" length="20" not-null="true" />
</property>
<property name="paramkey" type="java.lang.String">
<column name="paramkey" length="15" not-null="true" />
</property>
<property name="paramvalue" type="java.lang.String">
<column name="paramvalue" length="65535" />
</property>
<property name="userid" type="java.lang.String">
<column name="userid" length="20" not-null="true" />
</property>
</class>
</hibernate-mapping>

-----------------------------------------------
业务层:

hql="from Parameters p where p.userid=? and p.paramtype=? and p.paramkey=?";
List list=getHibernateTemplate().findByNamedQuery(hql, new Object[]{"user","PREF-DEALVIEW","GENERAL"});

-----控制台error info:
com.esapro.icats.framework.base.BusinessException: Named query not known: from Parameters p where p.userid=? and p.paramtype=? and p.paramkey=? ; nested exception is org.hibernate.MappingException: Named query not known: from Parameters p where p.userid=? and p.paramtype=? and p.paramkey=?




...全文
1067 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
oxcow 2011-09-29
  • 打赏
  • 举报
回复
[Quote=引用楼主 wingoal 的回复:]
hbm.xml:
<hibernate-mapping>
<class name= "com.esapro.icats.framework.pojo.Parameters " table= "parameters " >
<id name= "parametersid " type= "java.la……
[/Quote]

把findByNamedQuery改成find
findByNamedQuery 执行的是预定义SQL,也就是在映射文件中使用
<sql-query name="sqlName"></sql-query>预先定义的SQL.

具体配置可以看下hibernate指南
小菜鸟的博客 2011-09-29
  • 打赏
  • 举报
回复
findByNamedQuery()这个方法是要在hbm.xml文件中配置的,但是却没有在配置文件中定义,所以报错了。
你可以这样解决
第1.你可以在配置文件里配置;
第2.你换个方法,使用createQuery()这个方法就可以了。
xdrs1314 2011-09-29
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 xdrs1314 的回复:]

hql= "from Parameters p where p.userid=? and p.paramtype=? and p.paramkey=? ";
List list=getHibernateTemplate().findByNamedQuery(hql, new Object[]{ "user ", "PREF-DEALVIEW ", "……
[/Quote]是写法,打成协防了。罪过!
xdrs1314 2011-09-29
  • 打赏
  • 举报
回复
hql= "from Parameters p where p.userid=? and p.paramtype=? and p.paramkey=? ";
List list=getHibernateTemplate().findByNamedQuery(hql, new Object[]{ "user ", "PREF-DEALVIEW ", "GENERAL "});

上面的hql协防没有错,我只是怀疑你的p.userid中的值类型是varchar的值"user ",是不是int类型的?
小菜鸟的博客 2011-09-29
  • 打赏
  • 举报
回复
from Parameters where userid=? and paramtype=? and paramkey=?
试试
zljjava 2011-09-28
  • 打赏
  • 举报
回复
要在hbm.xml文件中配置
wingoal 2007-01-15
  • 打赏
  • 举报
回复
在线等啊!!!

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧