gpt4 book ai didi

java - JPA - EntityManager 的 findByProperty() 等效项

转载 作者:行者123 更新时间:2023-12-02 04:33:52 25 4
gpt4 key购买 nike

DAO 提供 findByProperty(String propertyName, Object value) 来查找使用特定属性的对象。但JPA中的EntityManager只提供了基于主键搜索的find(),参见EntityManager

为了避免编写 SQL,EntityManager 是否有等效的通用 findByProperty() 方法?

最佳答案

解决方案:

  1. 使用 @Viswanath L 建议的 Critieria API
  2. 编写您自己的 findByProperty(),它与 DAO 的 findByProperty() 相同,如下所示:

    public List<User> findByProperty(String propertyName, final Object value)
    try {
    final String queryString = "select model from **User** model where model."
    + propertyName + "= :propertyValue";
    Query query = getEntityManager().createQuery(queryString);
    query.setParameter("propertyValue", value);
    return query.getResultList();
    } catch (RuntimeException re) {
    logger.error("find by property name failed", re);
    throw re;
    }
    }

我个人更喜欢第二种,因为它简洁,唯一的修改是表名。此外,这种方法很灵活,您可以在此基础上编写 findByProperty() 的许多版本。 p>

关于java - JPA - EntityManager 的 findByProperty() 等效项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31084729/

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