2013-08-04 23 views
0

我們假設,我的數據庫中有兩個表,我必須使用兩個表編寫連接查詢。我將其中一個表映射爲我的MVC項目中的實體類,但沒有將其他表映射爲實體。 所以當我運行hql時,會不會加入工作?如果參與連接的表沒有映射爲hibernate配置中的實體,會在hibernate中工作嗎?

如果它不,並且如果它有必要有一個映射,我應該指定這些實體之間的約束(主鍵/外鍵)嗎?

我的應用程序只是從表中讀取數據,因此我不想浪費很多時間編寫實體類。有沒有使用休眠的簡單方法?

回答

1

Hibernate只知道會話工廠中有什麼。如果你還沒有定義Hibernate永遠不會知道的某個實體,那麼寫入涉及該實體的hql是沒有問題的。

或者,您可以從會話中獲取連接,然後執行自定義sql而不是hql。

要使用普通的SQL,你可以使用類似:

的getSession()的doWork(新工作(){

 @Override 
     public void execute(Connection connection) throws SQLException { 
      // TODO Auto-generated method stub 

     } 
    }) 
1

關於你的問題:HQL只映射實體的作品,但可以返回not-mapped object with ResultTranformer,但不是你的情況你可以用你的hql所需的關係和屬性創建最小的有害實體定義
另一種解決的方法是創建普通的SQL查詢並返回僅映射的實體session.createSQLQuery(yourQuerySQL).addEntity(YourMappedEntity.class).

+0

謝謝。我希望這會起作用。 – user2182000

+0

「歡迎來到SO。如果下面的答案之一解決了你的問題,你應該接受它(點擊相應答案旁邊的複選標記),這樣做有兩件事,它讓每個人都知道你的問題已經解決了,幫助你獲得援助的人,請參閱這裏以獲得完整的解釋「 –

相關問題