У меня есть следующее исключение
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
И иногда он работает хорошо, но иногда вызывает исключение.