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

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

最佳答案

当然是:

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


现在传递任何具有持久“ name”属性的实体类,您将获得一个名为Fido的实体实例的列表。

关于java - 使用动态调用作为jpa调用的条件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16877057/

10-10 19:02