2013-01-04 52 views
0

我正在使用JPA和Hibernate,但我的需求對於構建HQL來說太複雜了,至少對我而言。 我決定使用原生SQL。 我需要得到一些記錄/實體與他們的子列表,但是,我需要篩選孩子,我不想要所有的孩子。 這可能嗎?加入表格以填充實體列表

,比如我有三個表像

conversation_table: ID

mail_table: ID,conversation_id,SENDER_ID

USER_TABLE: ID,married_bool

我需要有conversation實體那些由已婚的用戶發送的由mail填寫的列表。

我試過到目前爲止

Select * from conversation_table join mail_table on (mail_table.sender_id=user_table.id and user_table.married_bool=true) 

我正在一個錯誤,如:

user_table is unknown 

我試圖

Select * from (conversation_table, user_table, mail_table) join mail_table on (mail_table.sender_id=user_table.id and user_table.married_bool=true) 

我越來越

mail_table is non unique table/alias 

這只是一個簡單的例子,還需要填寫郵件實體在其他表中的一些實體列表,例如recipient_table,我想我必須添加連接子句填充這些也在本機查詢,我是嗎?當我嘗試使用這些額外的連接子句時,我也會遇到'未知'/'非唯一別名'錯誤。

感謝您的建議。

回答

1

事情是這樣的:

SELECT * 
FROM conversation_table CT 
    JOIN mail_table MT 
     ON CT.Id = MT.conversation_id 
    JOIN user_id UI 
     ON MT.sender_id=UI.id 
WHERE UT.married_bool = 1 
1

如果你真的想使用Hibernate ORM此查詢他們的標準查詢是這樣做的最好的辦法。最近,我有相同的要求,只使用標準。