hibernate - 使用正确语法的HQL联接查询上的无效查询

标签 hibernate grails gorm

我有一个HQL联接查询,如下所示

SELECT first FROM FirstTable AS first, SecondTable AS second WHERE second.firstTable = first;

以上查询返回为无效查询。但是,如果我在不使用SELECT first的情况下使用上述相同查询,则效果很好。我正在使用文档中的正确语法。对我可能遗漏的错误或任何解决方法有任何想法吗?我正在使用Grails动态查找器来运行HQL,即
FirstTable.findAll(hql.toString(),params)

其中hql是一个字符串生成器,我希望使用所有必需的参数(param)来构建查询。

我得到的完整错误如下

org.codehaus.groovy.grails.orm.hibernate.exceptions.GrailsQueryException: Invalid query [SELECT first FROM FirstTable AS first, SecondTable AS second WHERE second.firstTable = first group by first.id order by first.id] for domain class [class com.model.FirstTable]


FirstTable具有到OneToManySecondTable映射,而Secondtable具有到OneToOneFirstTable映射

最佳答案

就像您说的那样,它在您首先删除SELECT时起作用。因为findAll方法仅负责诸如“来自FirstTable”的查询。
建议改用executeQuery。

在您的情况下,它将类似于:

FirstTable.executeQuery("from FirstTable AS first, SecondTable AS second WHERE second.firstTable = first");

有关更多详细信息,请参见以下链接:issues1428duplicate so

关于hibernate - 使用正确语法的HQL联接查询上的无效查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47310153/

相关文章:

hibernate - GORM选择加入

sql - HQL一对多查询

Java Hibernate EntityManager 同步

grails - 如何更改 Grails 嵌入的列映射

运行 grails 1.3.7 时出现 hibernate 异常 'No value specified for parameter 2'

hibernate - 域类的Grails单元测试(Gorm)

grails - 如何在Grails中的列表中设置参数最大和偏移

hibernate - Hibernate Jar与Grails 2.0.3发生冲突

java - 如何在服务层处理Spring JPA的版本

java - 如何在 Hibernate 删除操作中获取对象的类