2013-06-12 88 views
0
SELECT * FROM test.pchi new INNER JOIN rlhi old ON new_id = old.menu_id where new.name='?' 

類似:轉換MySQL查詢休眠標準

Select * from db.employee emp INNER JOIN db.table on emp_tableID = table.id where emp.name = '?' 

如果你能告訴我如何做一個預測,這將是真棒......在:

Select emp.name, emp.sex, table.brand from .... 

我嘗試使用抓取,但我很新,並不斷髮生一些奇怪的錯誤。有人可以請示範如何做到這一點?

這個怎麼樣?

sess.createCriteria(pchi.class)/**/ 
       .setFetchMode("rlhi", FetchMode.JOIN) 
       .add(Restrictions.eq("new_id", "rlhi.menu_id")) 
       .add(Restrictions.eq("name", "SOME INPUT")) 
+0

從沒有的PCHi號NEW_ID和來自rlhi的old_id。 –

+0

導致你改變:D現在好了 – nachokk

+0

大聲笑...是的。你能幫我解決嗎? –

回答

1
sess.createCriteria(Pchi.class) 
       .setFetchMode("rlhi", FetchMode.JOIN) //note that rlh1 is the property name in Pchi class 
       .add(Restrictions.eq("name", "SOME INPUT")); 

在你的類,你有這樣的事情

class Pchi{ 
@ManyToOne(fetch = FetchType.LAZY) 
@JoinColumn(name="new_id", referencedColumnName="menu_id") 
private Rlhi rlhi; 
} 

class Rlhi{ 
@OneToMany(mappedBy="rlhi") 
private <Set> Pchi pchis; 
} 

注意當您使用SET應該重寫equals()hashCode()方法才能正常工作

+0

嘿謝謝! 那麼,但這會做我上面指定的兩列的聯接嗎? –

+0

@gran_profaci我編輯過,只是嘗試我不能在這裏嘗試,所以可能會有錯誤,看在輸出多少查詢執行,因爲你必須避免n + 1選擇 – nachokk

+0

非常感謝你!讓我試試這個! –