【问题标题】:JPAQL (Hibernate expecting IDENT)JPQL(Hibernate 期待 IDENT)
【发布时间】:2011-12-21 12:22:15
【问题描述】:

以下 JPA 查询有什么问题

select count(obj) from User as obj join obj.directoryNumbers as directoryNumbers where ((upper(obj.userId) like :userId58460273) and ((directoryNumbers in :1011355684)))

执行它会给我这个错误: 期待 IDENT,找到 '1011355684'

此参数(:1011355684) 是 DirectoryNumber 对象的列表,obj.directoryNumbers 是 DirectoryNumber 对象的集合。 User 和 DirectoryNumber 具有 OneToMany 关系。

我使用的是 Hibernate 3.6.1

【问题讨论】:

    标签: java hibernate jpa


    【解决方案1】:

    您能否重命名第二个参数“1011355684”?可能是 hibernate 期望那里有一个文字,而不是一个数字。

    【讨论】:

    • 好的,请将查询附加到问题中。如何传递查询参数?
    • 好吧,事实证明你是对的,它生成不正确,hibernate希望参数以字母开头!我修复了它,现在这部分工作了。但我仍然有一个问题,因为参数是一个集合 hibernate 已将查询转换为: select count(obj) from com.colurew are.billing.domain.User as obj join obj.directoryNumbers as directoryNumbers where ((directoryNumbers in : p18881205660_, :p18881205661_)) 现在它抛出以下错误:意外的 AST 节点:{vector}
    • 查询是:select count(obj) from User as obj join obj.directoryNumbers as directoryNumbers where ((directoryNumbers in :p1011355684))) 参数设置如下:q = em.createQuery (theStringAbove) query.setParameter(":p1011355684", arrayListOfDirectories);
    • 知道了,应该是用setParameterList。
    猜你喜欢
    • 2021-06-16
    • 2017-11-19
    • 2019-08-12
    • 2013-10-31
    • 2013-11-12
    • 1970-01-01
    • 2013-04-24
    • 1970-01-01
    • 2016-10-21
    相关资源
    最近更新 更多