执行hibernate模板的findByNamedQuery

时间:2013-09-08 08:25:32

标签: java mysql spring hibernate hibernate-annotations

我对hibernate很新,我在我的一个应用程序中尝试了它。我选择使用注释会话工厂bean和我的编辑器为具有命名查询的DB中的每个表生成实体类。 hibernateTemplate.findByAll工作正常。但是,当我尝试hibernateTemplate.findByNamedQuery("findById", "<some_id>")时,它出错:java.lang.IndexOutOfBoundsException: Remember that ordinal parameters are 1-based.经过一些谷歌搜索后,尝试了多种解决方案:

  1. 将编辑器生成的namedQuery从@NamedQuery(name = "Table.findById", query = "SELECT u FROM Table t WHERE t.id = :id")更改为:@NamedQuery(name = "Table.findById", query = "SELECT u FROM Table t WHERE t.id = ?"),但出现了相同的错误。
  2. 使用hibernateTemplate.findByNamedParam尝试但最终收到错误:java.lang.IllegalArgumentException: node to traverse cannot be null!
  3. 我可以使用hibernateTemplate.find()来实现这一点,但是我如何使用findByNamedQuery / Param方法实现相同的目标,因为文档说这些方法可能用于根据字段获取记录?

0 个答案:

没有答案