0

在以下代码中,我们从特定实体(宠物)获取数据。我可以使用此代码动态获取任何实体(而不是宠物使用客户、订单等)

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();
4

2 回答 2

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 的实体实例的列表。

于 2013-06-01T20:52:03.797 回答
0

在函数上使用模板并通过参数传递类类型、参数名称和值。

于 2013-06-01T20:58:31.507 回答