2013-06-01 66 views
1

我在文檔中閱讀,我看到要讀取jpa數據我需要使用下面的代碼。 這是通過SQL從JPA表讀取數據的唯一方法?從JPA讀取數據的方法

factory = Persistence.createEntityManagerFactory("abc"); 
EntityManager entityManager = factory.createEntityManager(); 
Query query = entityManager.createQuery("SELECT p FROM " + className + " p"); 

回答

2

有幾種使用JPA讀取數據的方法。你提供的例子是使用JPQL。此外,您可以:

  1. 執行通過EntityManager#createNativeQuery(String nativeSql)原生SQL查詢:

    Query q = entityManager.createNativeQuery("SELECT * FROM MY_TABLE"); 
    
  2. 使用Criteria API

  3. 檢索單個實體通過它的使用EntityManager#find(...)主鍵:

    MyObject myObject = entityManager.find(MyObject.class, myObectId); 
    
+0

感謝您的回答!我看到第一個選項就像在我的文章中,關於第三個選項假設我需要提供通用代碼,可以處理任何類的類並從他的成員獲取數據我可以使用它,如果是的話,例子會很有幫助。 –

+0

第一個選項使用本機SQL,而您的文章中的示例使用JPQL。 JPQL與SQL非常相似,但不是同一件事(請參閱我提供的鏈接)。 'em.find'只能用於根據數據庫中的主鍵來查找_single_對象。假設'MyObject'是一個實體,'myObjectId'是它的主鍵,你不需要任何額外的代碼,而不是我的答案中顯示的那一行。 – DannyMo

相關問題