我正在使用 JPAQuery 检索记录以进行修改,并且我还想通过指定 LockModeType.PESSIMISTIC_WRITE 来阻止它们与其他事务接触。
当结果列表被阻止时,我想获取较小的数据块(1000 行)以防止 OutOfMemoryError 异常。这是因为表中可能有数十万行。
我试图写一个这样的查询,但它会立即阻止实体并返回整个结果,所以我没有机会拆分成更小的尺寸。
@Override
@Lock(LockModeType.PESSIMISTIC_WRITE) // exclusive lock
public List<Order> getOrderListToSend(int productId) {
QOrder qOrder = QOrder.order;
return new JPAQuery<Order>(entityManager)
.from(qOrder)
.join(qOrder.product, QProduct.product)
.where(qOrder.product.id.eq(productId)
.and(qOrder.statut.eq(StatutOrder.PLANNED))
.and(qOrder.exported.eq(Boolean.FALSE)))
.fetch();
}
谁能帮我?