Переход от glassfish3 к payara5 один кусок кода перестает работать. Наш код сохраняет дату в наборе записей и выбирает те обновленные записи. В glassfish3 работают без проблем, в payara5 select не возвращает запись (похоже, что он работает в другой транзакции). Если результат отличается, мы генерируем исключение, поэтому данные никогда не сохраняются. Объем транзакции: READ_COMMITTED
try {
String whereClause = " where "
+ "em.mailboxToBeUsed =:mailbox "
+ "and em.lastSendResult is null "
+ "and (em.errorsNumber is null or em.errorsNumber<4) ";
Query updateQuery = em.createQuery("update EmailTobeSended em "
+ "set em.trysendsince=:dat " + whereClause);
updateQuery.setParameter("mailbox", mb);
updateQuery.setParameter("dat", key);
int modificate = updateQuery.executeUpdate();
em.flush();
TypedQuery<EmailTobeSended> emlocksel = em.createQuery(
"select em from EmailTobeSended em WHERE em.mailboxToBeUsed =:mailbox AND "
+ "em.trysendsince=:dat "
+ " order by em.emailId ", EmailTobeSended.class);
emlocksel.setParameter("mailbox", mb);
emlocksel.setParameter("dat", key);
res = emlocksel.getResultList();
if (modificate != res.size()) {
throw new java.lang.AssertionError("Lock error on select emailtobesended");
}
} catch (Exception ex) {
gotError = true;
res = null;
}
На glassfish3, после очистки, во втором запросе выясняется, что запись обновлена. На payara5 нет результата
РЕДАКТИРОВАТЬ
мы используем eclipselink