我有一个类,它有一个通过实体管理器创建客户对象的方法。我想添加另一个方法,它将返回一组创建的对象;我怎么能这样呢?例如,我有以下代码:
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
}
答案 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());