2

我对休眠很陌生,我正在我的一个应用程序中尝试它。我选择使用注释会话工厂 bean,我的编辑器为数据库中具有命名查询的每个表生成实体类。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!

我可以使用 hibernateTemplate.find() 来实现这一点,但是我如何使用 findByNamedQuery/Param 方法来实现这一点,因为文档说这些方法可以用于基于字段获取记录?

4

0 回答 0