0

我有以下方法

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

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

为什么 JPA 在 JPQL 批量插入后看不到新记录?

4

1 回答 1

1

有很多可能性。这里有一些

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

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

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

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

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

于 2013-08-16T07:35:18.697 回答