我有以下方法
@Transactional
void method()
{
// JPQL bulk insert goes here
// JPA criteria query to select results of bulk insert above
// returns nothing here
}
为什么 JPA 在 JPQL 批量插入后看不到新记录?
我有以下方法
@Transactional
void method()
{
// JPQL bulk insert goes here
// JPA criteria query to select results of bulk insert above
// returns nothing here
}
为什么 JPA 在 JPQL 批量插入后看不到新记录?
有很多可能性。这里有一些
在您的查询中,您通过调用其他一些组件(例如 DAO)来执行此操作,该组件的查询方法被声明为具有新事务(例如 REQUIRED_NEW)。因为它在另一个 txn 中,所以在提交“外部”txn 之前,您将无法看到更改。
您已打开二级缓存和查询缓存,因此查询只是返回先前缓存的结果。
您获取实体管理器的方式可能存在问题,并且您使用了两个绑定到不同 txns 的 EM。
您的查询完全错误,因此它返回空结果
为了帮助您进行调试,请尝试打开 SQL 跟踪(通过 log4jdbc/JdbcDsLog 等)并检查向 DB 发出的实际语句是什么。