[英]Java Hibernate HQL SQL INNER JOIN query not working- Oracle
Hibernate / Java新手在這里,任何幫助將不勝感激!
所以……我有一個稱為ITEMS的表和一個ITEM_OWNER_JOIN表,由
“ itemKey”列和“所有者”列,這是一組字符串值...
在Item.java中,我有:
@ForeignKey(name="FK_ITEM_OWNER_FK")
@ElementCollection(targetClass=java.lang.String.class, fetch = FetchType.Eager)
@JoinTable(name= "ITEM_OWNER_JOIN", joinColumns=@JoinColumn(name="itemKey"))
private Set<String> owners = new HashSet<String>();
基本上我正在嘗試運行HQL查詢所有者匹配searchText參數的結果。
所以我嘗試了:
Query q = session.createQuery("select distinct i.itemKey from Item i inner join"+
" i.owners o where o.owners like '"+searchText+"'");
並且我得到org.hibernate.QueryException:無法取消引用標量集合元素:所有者[從...中選擇不同的w.workspaceKey。
我嘗試研究該異常無濟於事... :(
感謝您的時間!
如下
高品質
select i
from Item i
inner join i.owners io
where io like 'searchText';
Oracle查詢
SELECT Distinct(i.itemKey)
FROM Item i, ITEM_OWNER_JOIN io
WHERE i.itemKey = io.itemKey and io.x like '%%';
其中“ x”是列名。
我的應用程序的工作示例
來自實體:
@ElementCollection
@JoinTable(name = "rule_tagged_name", joinColumns = @JoinColumn(name = "re_rule", referencedColumnName = "id"))
private List<String> ruleTagNames;
數據庫列
RE_RULE NUMBER
RULE_TAG_NAMES
高品質
Select ru FROM Rule ru inner join ru.ruleTagNames rt_name WHERE rt_name in :tagNameList
嘗試與IN
運算符一起使用,因為owners
為多個。
Query hqlQuery = session.createQuery("select distinct i.itemKey from Item i inner join"+
" i.owners o where o.owners in :ownersParam");
然后使用所有者設置值設置參數owners
,
Set<String> ownerSet = new HashSet<String>();
ownerSet.add(searchText);
hqlQuery.setParameterList("ownersParam", ownerSet);
//then retrieve result
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.