Spring JPA实体管理器在事务中批量插入后不返回任何行

时间:2013-08-15 15:05:05

标签: hibernate spring-mvc jpa bulkinsert

我有以下方法

  @Transactional
  void method()
  {
      // JPQL bulk insert goes here

      //  JPA criteria query to select results of bulk insert above 
      // returns nothing here
  }

为什么JPA批量插入后JPA没有看到新记录?

1 个答案:

答案 0 :(得分:1)

有很多种可能性。这是一些

  1. 在您的查询中,您通过调用其他组件(例如DAO)来执行此操作,其中查询方法被声明为具有新事务(例如REQUIRED_NEW)。正如在另一个txn中一样,在“外部”txn提交之前,您将无法看到更改。

  2. 您已启用二级缓存和查询缓存,因此查询只返回先前缓存的结果。

  3. 您获取实体管理器的方式可能存在问题,并且您正在使用两个绑定到不同txns的EM。

  4. 您的查询完全错误,因此返回空结果

  5. 为了帮助您进行调试,请尝试打开SQL跟踪(通过log4jdbc / JdbcDsLog等)并检查发给DB的实际语句是什么。