2015-12-13 70 views
0

我使用JPA與Hibernate作爲實施默認情況下是否急於提取JPA命名查詢?

我有下面的應用程序代碼

CustomerData customerData = (Customer) getCustomerDataDAO().getObjectByNamedQuery("Customerdata.findByCustomername", queryParameters); 

爲queryObject.getResultList()被執行,下面的方法

@Override 
    @SuppressWarnings("unchecked") 
    public <T> getByNamedQuery(final String queryName) { 
     Query queryObject = entityManager.createNamedQuery(queryName); 
      return queryObject.getResultList().get(0); 
    } 

12:18查詢火災打電話。當我訪問customerData的某些屬性時,我期待查詢會被觸發。 默認情況下是否急於提取JPA命名查詢?

+0

當您調用getResultList()時,將執行所有的查詢命名或不命名。就像javadoc所說:http://docs.oracle.com/javaee/6/api/javax/persistence/Query.html#getResultList%28%29:*執行SELECT查詢並將查詢結果作爲無類型列表返回。* –

+0

順便說一句,你怎麼能訪問列表的第一個元素,而沒有列表中的第一個地方? JPA如何在不執行查詢的情況下返回填充列表? –

+0

哦,我錯過了。我認爲查詢也會在你訪問域對象屬性時執行,就像get等會話方法一樣。請將它作爲答案發布,以便我可以接受它 – emilly

回答

0

當您致電getResultList()時,會執行所有的查詢命令,無論命名與否。正如the javadoc所說:

執行SELECT查詢並將查詢結果作爲無類型列表返回。

相關問題