java - 左加入 hql 中的第一场比赛

标签 java oracle hibernate hql

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 类中将 schedulingPoolAddressestx 关联起来。

关于java - 左加入 hql 中的第一场比赛,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35319996/

相关文章:

java - 忽略 jsonassert 中的特定属性/字段

java - 将 Spring Boot war 部署到 Jenkins 中

Sql Only 字符串搜索

java - Autowiring 依赖项注入(inject)失败(spring+hibernate+gwt)

hibernate - 不存在具有给定标识符的行 hibernate

java - 不安全,反射访问与 toCharArray(性能)

java - 使用 Math.round 舍入到小数点后一位?

c# - 使用现有的 C# 模型类构建实体图 (.EDMX)

oracle - 为什么即使禁用并行 DML 和并行 DDL 也会创建并行 session

hibernate - 在 JPA 或 HIBERNATE 中直接加入