簡體   English   中英

Java Hibernate HQL SQL INNER JOIN查詢不起作用-Oracle

[英]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.

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