如何返回一组持久化对象?

时间:2014-04-24 10:05:35

标签: java spring jpa entitymanager

我有一个类,它有一个通过实体管理器创建客户对象的方法。我想添加另一个方法,它将返回一组创建的对象;我怎么能这样呢?例如,我有以下代码:

public class DefaultCoreRepository implements CoreRepository {

private EntityManager entityManager;

@PersistenceContext(unitName = "crm-db")
public void setEntityManager(EntityManager entityManager) {
    this.entityManager = entityManager;
}

private <T> T persist(T entity) {
    entityManager.persist(entity);
    return entity;
}

public void createCustomer(Customer customer) {
    persist(customer);
}

public Set<Customer> getCustomers() {
    //Code to be written here
}

3 个答案:

答案 0 :(得分:2)

一种可能的方法是

entityManager.createQuery("SELECT customer FROM Customer customer",  
                          Customer.class) 
             .getResultList();

您可以在实体管理器中创建选择查询,以使用JPA

获取结果列表

答案 1 :(得分:1)

您可以编写这样的查询并将List转换为Set:

public Set<Customer> getCustomers() {
     return new HashSet<Customer>(createQuery("select c from Customer c", Customer.class).getResultList());
}

答案 2 :(得分:0)

从JPA 2.2开始,您还可以使用Java 8流API:

entityManager.createQuery("SELECT customer FROM Customer customer", Customer.class)
            .getResultStream()
            .collect(Collectors.toSet());