Исчерпал Resultset при попытке кеширования - PullRequest
0 голосов
/ 30 апреля 2019

У меня есть следующее исключение

Caused by: <openjpa-2.4.0-r422266:1674604 fatal general error> org.apache.openjpa.persistence.PersistenceException: Exhausted Resultset

При использовании этого кода

@PersistenceContext
protected EntityManager em;


@Override
@TransactionalRollback
public void updateContractor(Coupons coupon) {
    cacheWorker(() -> {
        em.merge(coupon);
        return null;
    }, coupon, new String[]{String.valueOf(coupon.getId().getContractorId()), coupon.getId().getCouponId()});
}


 public <T> T cacheWorker(Supplier<T> supplier, Object object, String[] keyLine) {
        if (useCache) {
            String key = ParseUtils.collectToKeyWithDot(CACHE_DAO_PREFIX + keyLine);
            T value = select(key);
            if (object == null && value == null) {//For first Select
                value = supplier.get();
                addCache(key, value);
            } else if (object == null && value != null) { //For every repeated Select 
              return value;
            } else if (object.equals(value) && value != null) {// For INSERT/UPDATE, and DELETE (which doesn't handle here)
                return value;
            } else if (!object.equals(value) && value != null) {// For UPDATE, and DELETE (which doesn't handle here)
                update(supplier, object, key);
                value = getCache(key);
            } else if (!object.equals(value) && value == null) {//For INSERT, and DELETE (which doesn't handle here)
                insert(supplier, object, key);
                value = getCache(key);
            }
            return value;
        } else {
            return supplier.get();
        }
    }

На самом деле, я читал здесь много вопросов об этой ошибке, но везде использовался rs.next(); Но у меня нет этого здесь.У меня есть только EntityManager

Я не знаю, почему проблема возникает, но предположим, что из-за того, что em.merge(coupon); выполняется, пока идет к поставщику, не так ли?

UPD

И иногда он работает хорошо, но иногда вызывает исключение.

...