【问题标题】:How to persist an Array List of type Entity in JPA如何在 JPA 中持久化实体类型的数组列表
【发布时间】:2012-11-27 08:33:02
【问题描述】:

如何在 JPA 中持久化实体类型的数组列表?

例如,有一个名为“表”的实体。 我正在创建一个数组列表ArrayList<Table> table = new ArrayList<Table>(); 尝试使用entityManager.persist(table); 将其持久化,但没有成功。有什么解决办法吗?

【问题讨论】:

标签: jpa arraylist entity persist


【解决方案1】:
 EntityManagerFactory emf = Persistence.createEntityManagerFactory("TDEMSPU");
        em = emf.createEntityManager();


            em.getTransaction().begin(); 

        List<Enquiry> tempEnqList = tempEnqList();
        for (Iterator<Enquiry> it = tempEnqList.iterator(); it.hasNext();) {
            Enquiry enquiry = it.next();

            em.persist(enquiry);
            em.flush();
            em.clear();
        }

         em.getTransaction().commit();

【讨论】:

    【解决方案2】:

    只需遍历它并一个一个地持久化它

    【讨论】:

    • 我每次都需要持久化大量的记录,每条记录的持久化时间都太长了。因此,找到一种方法来一次保存整个列表。
    • @user1855852 - 实际上没有办法解决它 - 没有用于持久化新实体的批量操作。如果您在事务中持久化实体,则提供程序将在事务结束时为所有实体生成优化的 SQL。
    • 此操作可能会产生异常,以便反复访问数据库。
    • @MariaMercedesWyssAlvarez 我很确定你的例外不是因为这个动作。如果在一个接一个地保存多个项目的情况下会触发异常,这将是 jpa 实现中的一个主要错误。是什么让您认为您的异常是由迭代和保存引起的?
    【解决方案3】:

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-04
    • 2020-09-17
    • 2013-06-16
    • 2017-06-22
    • 1970-01-01
    • 1970-01-01
    • 2011-06-07
    相关资源
    最近更新 更多