2017-06-26 18 views
0

嗨,大家好我是新來的JPA,命名查詢,等等。我需要這樣的:JPA - 從動態表名稱選擇所有的行

select t from :tableName t 

代碼後來我想是這樣的:

em.createQuery(...); 
setParameter("tableName", "Person") 

結果將是:

select * from person 

如何編寫這樣一個通用的JPA查詢語句允許從選擇的所有行:tableNam e可以在運行時定義?在此先感謝

+0

的可能的複製[JPA:如何指定對應一類在運行時的表名(https://stackoverflow.com/questions/906671/jpa如何做 - 我指定 - 表名 - 對應於一個類在運行時) –

+0

嗨,這個問題沒有疑問 – Niki

+0

它不能這樣做,表名可以不會被參數化。 – Shadov

回答

0

試試這個我想這樣的作品以及

EntityManagerFactory emfactory=Persistence.createEntityManagerFactory("Eclipselink_JPA"); 
    EntityManager entitymanager = emfactory.createEntityManager(); 

    Query query = entitymanager. 
    createQuery("Select p from Person p"); 
    List<String> list = query.getResultList(); 
+0

不工作..我正在使用hibernate和sql server。看到錯誤:SQLServerException:必須聲明表變量 – Niki

0

setParameter("foo", foo)被用於設置值表中沒有設置表名稱的列。我不認爲它會工作,因爲你想動態設置表名。

你可以試試這個:

public returnType foo(String tableName){ 
    String jpql = "SELECT t FROM " + tableName+ " t"; 
    Query query = em.createQuery(jpql); 
    //rest of the code  
} 
+0

他爲什麼要嘗試? JPQL中沒有'SELECT *'這樣的東西。 –

+0

對不起,我會編輯.. @NeilStockton –