为什么jpa选择查询卡住?

时间:2016-12-09 03:29:06

标签: java jpa jpql

我有查询数据,这是一个简单的,这是查询:

SELECT COUNT(o.id) FROM Order o WHERE o.customerId = :customerId

它会以某种方式卡住,它不会返回异常或任何东西。我想知道除了锁定特定行之外还有哪些其他可能性使SELECT查询像这样停留?因为就我而言,一些数据库会在交易完成时解锁该行。

仅供参考:我使用的是PostgreSQL 9.4和JDK 1.8。

编辑1:

以下是我用来执行查询的一些代码

public Long findListActiveOrderByCustomerId(String customerId){
    try {
        TypedQuery<Long> query = entityManager.createNamedQuery("CustomerActiveOrderReport.findByCustomerId", Long.class);
        query.setParameter("customerId", customerId);
        Long count = query.getSingleResult();
        return count;
    } catch (NoResultException e) {
        return null;
    }
}

这里叫它:

LOG.debug("### START CHECK ACTIVE ORDER CUSTOMER ###");
    Long orderList = customerOrderRepository.findListActiveOrderByCustomerId(customerId);
        if (orderList > 0) {
            LOG.error("orderList > 0");
            throw new InvalidOrderException("Customer already has active order");
        }
LOG.debug("### FINISH CHECK ACTIVE ORDER CUSTOMER ###");

日志停在“START CHECK ACTIVE ORDER CUSTOMER”,但它没有卡在那里,它仍然继续,就像没有任何事情发生。它没有任何例外。

编辑2:

以下是几个日志:

2016-12-08 12:20:06.616 [executor-1-287] DEBUG com.daksa.tos.order.OrderResource | ### ORDER USING WEB ###
2016-12-08 12:20:06.616 [executor-1-287] DEBUG com.daksa.tos.order.OrderResource | ### START CHECK RADIUS BRANCH ###
2016-12-08 12:20:06.616 [executor-1-287] INFO  com.daksa.beemif.client.PersistentClient | sendAsync
2016-12-08 12:20:06.620 [executor-1-287] DEBUG com.daksa.tos.order.OrderResource | ### FINISH CHECK RADIUS BRANCH ###
2016-12-08 12:20:06.620 [executor-1-287] DEBUG com.daksa.tos.order.OrderResource | ### START CHECK ACTIVE ORDER CUSTOMER ###
2016-12-08 12:20:06.620 [executor-1-287] DEBUG com.daksa.tos.order.infrastructure.EntityManagerProducer | Create EntityManager
2016-12-08 12:20:12.526 [worker-3-2] DEBUG com.daksa.beemif.proto.ProtoRequestMapper | channelRead0(resource: order, method: createOrder)
2016-12-08 12:20:12.527 [executor-1-288] INFO  com.daksa.tos.order.OrderResource | ### createOrder ###
2016-12-08 12:20:12.527 [executor-1-288] INFO  com.daksa.tos.order.OrderResource | branchId 8e55ad56faa240be83b2044d79592114
2016-12-08 12:20:12.527 [executor-1-288] DEBUG com.daksa.tos.order.OrderResource | ### ORDER USING WEB ###

你可以看到我的代码从“使用网页订购”开始,直到“开始检查活动订单”,但是没有“完成检查活动订单客户”它回到“使用网页订购”并继续同时在我的网页上显示失败。

0 个答案:

没有答案