2013-06-04 73 views
0

我有以下功能在我的休眠文件:我怎樣才能做一個選擇,其中如該查詢休眠而不使用查詢

try { 
    SessionFactory sessFact = new Configuration() 
    .configure("/org/test/tutorial/hibernate.cfg.xml").buildSessionFactory(); 
    Session sess = sessFact.openSession(); 
    Transaction tran = sess.beginTransaction(); 
    List<testModel> hostsInHostclass = sess.createSQLQuery("SELECT * FROM Employee where Employer like '"+ANY INPUT+"'").addEntity(tut_model.class).list(); 

    } catch (HibernateException he) { 
     throw new DependencyException("DB Error: " + he.getMessage()); 
    } 

現在,寫它,這是違背了休眠的目的,因爲我必須實際指定查詢。有什麼辦法可以隱式做到這一點?

假設我的模型文件是正確的。它有四個欄目:員工,僱主,年齡和性別。請幫助我解決這個問題。

+0

四列。抱歉。這是在模型指定正確的數據庫中。 –

回答

0

使用此:

sess.createQuery("from Employee e where e.employer = :emp"). 
     setEntity("emp", anEmployerInstance).list(); 

其中Employee是你的實體的名稱,employerEmployee類匹配Employer數據庫字段屬性的名稱,emp是任意名稱,anEmployerInstance是一個實例Employer類。

我認爲在這個答案中Employer是另一個實體,所以我使用setEntity()方法。但我無法確定,因爲我無法訪問Employee實體代碼。

+0

如果我想給它一個輸入,該怎麼辦?說串x? 所以現在查詢」 sess.createQuery( 「從僱員e其中e.employer =:」 + A)。 setEntity(一,anEmployerInstance).LIST(); –

+0

我寫的查詢是參數化的查詢。在運行時,'emp'被你在'setEntity()'方法中傳遞的實例替換。你不能用一個字符串替換一個實例。 – eternay

+0

哦。有沒有辦法用String來做到這一點? –

相關問題