簡體   English   中英

在hql中左加入第一個比賽

[英]left join first match in 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:非法嘗試取消引用元素屬性為[name]的集合[scheduling0_.id.schedulingPoolAddresses]

一個調度池可以有多個地址,當我執行該語句時,我得到了異常。 有沒有辦法獲得匹配的第一個地址並加入它以防止出現此異常?

您需要使用別名

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM