【问题标题】:How to suppress JPA warnings?如何抑制 JPA 警告?
【发布时间】:2017-06-10 20:02:22
【问题描述】:

我有一个 App Engine 端点,它必须在修改某些实体字段并返回响应之前调用 detach()。但是每次我看到下面的日志充斥着我的开发者控制台日志。我怎样才能抑制这个讨厌和不必要的警告?

org.datanucleus.ObjectManagerImpl detachObject: Object ... was detached before its changes could be flushed. Changes will not reach the datastore. This is likely the result of a JPA detach() call before flush(), which is a stupid thing to do anyway, but it was your choice.

【问题讨论】:

  • @LewBloch :但这根本不是一件愚蠢的事情!我不想修改数据存储上的实体,但我需要在发送响应之前修改一个字段。我只需要禁用该警告。
  • 如果你想“在发送响应之前修改一个字段”然后你 DETACH 未修改的对象然后更改字段(在分离的对象中)!
  • @NeilStockton :嗯,我也需要更改实体。所以我在调用 detach() 之前先这样做: EntityTransaction transaction = mgr.getTransaction();交易.开始(); mgr.persist(票);事务.commit(); mgr.refresh(票);但显然实体在分离时仍未正确刷新。
  • 它在提交时被刷新。日志会告诉你这个

标签: java google-app-engine jpa logging google-cloud-endpoints


【解决方案1】:

我只需将 EntityManager FlushModeType 配置为 COMMIT 并且在调用 commit() 后不调用任何东西。

【讨论】: