Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何返回一组持久化对象?_Java_Spring_Jpa_Entitymanager - Fatal编程技术网

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

Java 如何返回一组持久化对象?,java,spring,jpa,entitymanager,Java,Spring,Jpa,Entitymanager,我有一个类,其中包含通过实体管理器创建客户对象的方法。我想添加另一个方法,它将返回一组创建的对象;在我的情况下,我该怎么做?例如,我有以下代码: public class DefaultCoreRepository implements CoreRepository { private EntityManager entityManager; @PersistenceContext(unitName = "crm-db") public void setEntityManager(Entit

我有一个类,其中包含通过实体管理器创建客户对象的方法。我想添加另一个方法,它将返回一组创建的对象;在我的情况下,我该怎么做?例如,我有以下代码:

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
}
公共类DefaultCoreRepository实现CoreRepository{
私人实体管理者实体管理者;
@PersistenceContext(unitName=“crm db”)
公共无效设置EntityManager(EntityManager EntityManager){
this.entityManager=entityManager;
}
私有T持久化(T实体){
entityManager.persist(实体);
返回实体;
}
公共无效createCustomer(客户){
坚持(客户);
}
公共集getCustomers(){
//要在此处编写的代码
}

一种可能的方法是

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

您可以在实体管理器中创建选择查询,以使用JPA获取结果列表。您可以编写如下查询并将列表转换为集合:

public Set<Customer> getCustomers() {
     return new HashSet<Customer>(createQuery("select c from Customer c", Customer.class).getResultList());
}
publicset getCustomers(){
返回新的HashSet(createQuery(“从客户c中选择c”,Customer.class).getResultList());
}

自JPA 2.2以来,您还可以使用Java 8流API:

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

我建议您先阅读官方JPA教程:我在开始这个项目之前已经做了。谢谢。这是如何工作的?我的意思是,实体管理器在哪里存储所有持久化对象?谢谢您的回答。它从您的数据库中获取客户对象,您可以在那里阅读更多相关内容: