0

我正在使用 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();
}

谁能帮我?

4

0 回答 0