我对休眠很陌生,我正在我的一个应用程序中尝试它。我选择使用注释会话工厂 bean,我的编辑器为数据库中具有命名查询的每个表生成实体类。hibernateTemplate.findByAll
工作正常。但是当我尝试时hibernateTemplate.findByNamedQuery("findById", "<some_id>")
,它给出了一个错误:java.lang.IndexOutOfBoundsException: Remember that ordinal parameters are 1-based.
经过一番谷歌搜索,尝试了多种解决方案:
- 将编辑器生成的 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 = ?")
但得到了同样的错误。 - 尝试使用
hibernateTemplate.findByNamedParam
但最终出现错误:java.lang.IllegalArgumentException: node to traverse cannot be null!
我可以使用 hibernateTemplate.find() 来实现这一点,但是我如何使用 findByNamedQuery/Param 方法来实现这一点,因为文档说这些方法可以用于基于字段获取记录?