【问题标题】:JPA, get all elementsJPA,获取所有元素
【发布时间】:2016-11-15 03:58:12
【问题描述】:

我正在使用 JPA,并在这段代码中从 DB 中获取所有元素:

factory = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME);
EntityManager em = factory.createEntityManager();
// read the existing entries and write to console
Query q = em.createQuery("select s from Supporter s");
List<Supporter> supportersList = new ArrayList<Supporter>();
supportersList = q.getResultList();

问题是如何以更优雅的方式获取数据,我的意思是没有createQuery("select s from Supporter s"); 我记得当大小写“明确”并且我们不需要本机查询时,JPA 中可以使用 findAll 或 getAll 之类的方法。

【问题讨论】:

  • JPA API 中没有“findAll”方法。 Spring Data JPA 有一个,但它不是 JPA API,它几乎没有“更优雅”,只是隐藏 JPA API 代码并使用户远离真实代码

标签: sql jpa jakarta-ee


【解决方案1】:

您可以使用类型安全的标准:

public List<Supporter> findAll() {
    EntityManager em = factory.createEntityManager();
    CriteriaBuilder cb = em.getCriteriaBuilder();
    CriteriaQuery<Supporter> cq = cb.createQuery(Supporter.class);
    Root<Supporter> rootEntry = cq.from(Supporter.class);
    CriteriaQuery<Supporter> all = cq.select(rootEntry);
    TypedQuery<Supporter> allQuery = em.createQuery(all);
    return allQuery.getResultList();
}

【讨论】:

    猜你喜欢
    • 2014-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-10
    • 1970-01-01
    相关资源
    最近更新 更多