【发布时间】:2020-12-25 19:32:57
【问题描述】:
我需要帮助。我想问一下 grails 上的 Hibernate HQL。我想将 2 个表加入 1 个结果中。
我的控制器
TRANSACTION.executeQuery("from TRANSACTION join SUBSCRIBER on TRANSACTION.subscriberID = SUBSCRIBER.msisdn where TRANSACTION.date = '2020-09-04'"
结果:意外令牌:开启
当我更改与此源相同的代码时 This link
TRANSACTION .executeQuery("from TRANSACTION t1,SUBSCRIBER t2 where t1.subscriberID = t2.msisdn and TRANSACTION.date = '2020-09-04'")
结果:“字段列表”中的未知列“subscriber0_.pos”
我的数据库映射
class Transaction implements Validateable{
String id
String subscriberID
String currentBalance
String date
static mapping = {
datasource 'trx'
table 'TRANSACTION'
id generator: 'assigned', column: "ID"
subscriberID column: "subscriberID" <-- this value is equals to msisdn at Subscriber
currentBalance column: "currentBalance"
date column: "date"
version false
}
class Subscriber implements Validateable{
String id
String msisdn
String firstName
static mapping = {
datasource 'subs'
table 'SUBSCRIBER'
id column:"subscriberID"
msisdn column:"msisdn"
firstName column:"firstName"
version false
}
我想像这样加入他们
|名字 |订阅者ID |当前余额 |日期 |
【问题讨论】:
-
在查询中添加前导
select *并重试 -
@MarmiteBomber 我得到了这样的结果:org.springframework.orm.hibernate3.HibernateQueryException:意外令牌:* 在第 1 行第 8 列附近 [select * from com.dm.voucher.Transaction where date = '2020-09-04'];
-
抱歉,HQL 查询显然不需要 explicite
ON连接子句 - 请参阅 documentation 中的示例 -
hai @MarmiteBomber 我刚刚阅读了内部连接,我将我的代码放入了这个 def query=“from Transaction trx, Subscriber subs” query= query+“inner join subs.msisdn where “query = query +” Transaction.subscriberID = '0'" query= Transaction.executeQuery(query);我得到了这个:org.codehaus.groovy.runtime.typehandling.GroovyCastException:无法将带有类'java.lang.String'的对象''转换为类'java.util.ArrayList'
标签: hibernate grails groovy hql