我对hibernate很新,我在我的一个应用程序中尝试了它。我选择使用注释会话工厂bean和我的编辑器为具有命名查询的DB中的每个表生成实体类。 hibernateTemplate.findByAll
工作正常。但是,当我尝试hibernateTemplate.findByNamedQuery("findById", "<some_id>")
时,它出错:java.lang.IndexOutOfBoundsException: Remember that ordinal parameters are 1-based.
经过一些谷歌搜索后,尝试了多种解决方案:
@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方法实现相同的目标,因为文档说这些方法可能用于根据字段获取记录?