gpt4 book ai didi

java - Jpa 对象中具有不同的参数

转载 作者:行者123 更新时间:2023-12-01 10:32:59 24 4
gpt4 key购买 nike

我想知道 jpa 是否可以为此提供一些东西。我想要一个通用的方法:

SELECT P FROM personne p WHERE p.fistName = :fistName
SELECT P FROM personne p WHERE p.name = :name
SELECT P FROM personne p WHERE p.name = :name AND p.fistName = :fistName
SELECT P FROM personne p WHERE p.phone = :phone

有可能,或者我确实创建了所有sql查询,我发送一个对象并通过jpa搜索相同的对象。谢谢你。

最佳答案

我不知道我是否理解正确,但你可以做的是使用 Criteria API以编程方式构建您的查询。然后,您可以使用通用方法来通过 Person 的某个属性进行查询:

EntityManager em;

public List<Person> queryByPropertyValue(String propertyName, Object value) {
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Person> query = cb.createQuery(Person.class);
Root<Person> person = query.from(Person.class);
query.where(cb.equal(person.get(propertyName), value));
return em.createQuery(query).getResultList();
}

如果你想同时查询多个属性,你可以使用Map,如下所示:

public List<Person> queryByPropertyValues(Map<String, Object> properties) {
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Person> query = cb.createQuery(Person.class);
Root<Person> person = query.from(Person.class);
Predicate predicate = cb.and(); // == always true
for (Map.Entry<String, Object> property : properties.entrySet()) {
predicate = cb.and(predicate, cb.equal(person.get(property.getKey()), property.getValue()));
}
query.where(predicate);
return em.createQuery(query).getResultList();
}

关于java - Jpa 对象中具有不同的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34988641/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com