0

我刚刚从 wildfly 12 更新到 18,从 Java 8 更新到 11。我的项目中没有更改任何代码。不过,运行集成测试产生了一个非常奇怪的问题。UPDATE 语句似乎不再运行。例如:

@Transactional
public void updateStatus(final long id, final Status status)
{
    final Item item = entityManager.find(Item.class, id, LockModeType.PESSIMISTIC_WRITE);
    item.setStatus(status);
    entityManager.merge(item);
}

以前这会导致运行更新语句,现在什么也没有发生。如果我在运行更新语句entityManager.flush()后调用merge(),但数据库没有反映更新的实体。

不知道什么可能导致这种事情。我唯一能想到的是wildfly 18中的一些默认配置与12不同?

4

1 回答 1

1

这个问题似乎与这个问题非常相似(或相同):How to fix hibernate.transaction.flush_before_completion issue with JTA transactions in JBOSS EAP 7.2?

移除

<property name="hibernate.transaction.flush_before_completion" value="true" />

从我persistence.xml做的伎俩。

于 2019-11-11T19:54:41.180 回答