2013-06-01 21 views
1

在以下代碼中,我們從特定實體(Pet)獲取數據。我可以使用此代碼來獲得 動態任何實體(而不是寵物的使用客戶,訂單等)使用動態調用作爲jpa調用的標準

CriteriaQuery<Pet> cq = cb.createQuery(Pet.class); 
Root<Pet> pet = cq.from(Pet.class); 
cq.where(cb.equal(pet.get("name"), "Fido")); 
TypedQuery<Pet> q = em.createQuery(cq); 
List<Pet> results = q.getResultList(); 

回答

2

是的,當然:

public <T> List<T> getEntitiesNamedFido(Class<T> clazz) { 
    CriteriaQuery<T> cq = cb.createQuery(clazz); 
    Root<T> root = cq.from(clazz); 
    cq.where(cb.equal(root.get("name"), "Fido")); 
    TypedQuery<T> q = em.createQuery(cq); 
    List<T> results = q.getResultList(); 
} 

現在通過具有持續「名稱的任何實體類「屬性,您將獲得名爲Fido的實體實例的列表。

0

在函數上使用模板並通過參數傳遞參數名稱&的類類型參數名稱。