JPA EntiityManager.flush方法

Posted wumingoo1

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JPA EntiityManager.flush方法相关的知识,希望对你有一定的参考价值。

flush 方法

  • 将Managed状态的实体中的数据更新到数据库中(不用等到 commit 了)

flush 方法测试

find 之后 setter 之后 flush

@Test
public void test() {
    EntityManagerFactory factory = Persistence.createEntityManagerFactory("myJpa");
    EntityManager em = factory.createEntityManager();
    EntityTransaction tx = em.getTransaction();
    tx.begin();

    Student s = em.find(Student.class, 1L);
    /*

    Hibernate:
        select
            student0_.sid as sid1_0_0_,
            student0_.sage as sage2_0_0_,
            student0_.sname as sname3_0_0_
        from
            Student student0_
        where
            student0_.sid=?

     */
    s.setSage(s.getSage() + 1);
    em.flush();
    /*

    Hibernate:
        update
            Student
        set
            sage=?,
            sname=?
        where
            sid=?

     */
    tx.commit();
    em.close();
    factory.close();
}

以上是关于JPA EntiityManager.flush方法的主要内容,如果未能解决你的问题,请参考以下文章

Java JPA ORM 一对多 多对一

JPA双向一对多多一对一

JPA 多对多和 mappedBY

使用 Spring 数据 JPA 获取随机记录

JPA ManyToOne 关系:外键未存储在多方表中

带有 Jackson 和 Spring Boot 的实体 JPA 中的循环引用