select
schedulingpool.id,
schedulingpool.allocationVersion,
schedulingpool.tx.statusId,
schedulingpool.name,
schedulingpool.description,
schedulingpool.schedulingPoolAddresses.name,
schedulingpool.schedulingPoolAddresses.zip,
schedulingpool.schedulingPoolAddresses.city,
schedulingpool.schedulingPoolAddresses.countryId,
schedulingpool.schedulingPoolAddresses.street,
schedulingpool.statusId,
schedulingpool.tx.name,
schedulingpool.note1,
schedulingpool.note2
from
com.xx.module.mm.jpa.SchedulingPool as schedulingpool
left join schedulingpool.tx
left join schedulingpool.schedulingPoolAddresses
where schedulingpool.clientId = :clientId
order by schedulingpool.id DESC
javax.servlet.ServletException: java.lang.IllegalArgumentException: org.hibernate.QueryException: illegal attempt to dereference collection [scheduling0_.id.schedulingPoolAddresses] with element property reference [name]
调度池可以有多个地址,当我执行该语句时,我收到异常。 有没有办法只获取第一个匹配的地址并将其加入以防止出现此异常?
最佳答案
您需要使用别名
select
schedulingpool.id,
schedulingpool.allocationVersion,
tx.statusId,
schedulingpool.name,
schedulingpool.description,
schedulingPoolAddresses.name,
schedulingPoolAddresses.zip,
schedulingPoolAddresses.city,
schedulingPoolAddresses.countryId,
schedulingPoolAddresses.street,
schedulingpool.statusId,
tx.name,
schedulingpool.note1,
schedulingpool.note2
from
com.xx.module.mm.jpa.SchedulingPool as schedulingpool
left join schedulingpool.tx tx
left join schedulingpool.schedulingPoolAddresses schedulingPoolAddresses
where schedulingpool.clientId = :clientId
order by schedulingpool.id DESC
并且您需要在 SchedulingPool
类中将 schedulingPoolAddresses
和 tx
关联起来。
关于java - 左加入 hql 中的第一场比赛,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35319996/