* @param entity instance registered in the current persistence context.
*/
public void refresh(Object entity) {
try {
verifyOpen();
UnitOfWork uow = getActivePersistenceContext(checkForTransaction(!isExtended()));
if (!contains(entity, uow)) {
throw new IllegalArgumentException(ExceptionLocalization.buildMessage("cant_refresh_not_managed_object", new Object[] { entity }));
}
ReadObjectQuery query = new ReadObjectQuery();
query.setSelectionObject(entity);
query.refreshIdentityMapResult();
query.cascadeByMapping();
query.setLockMode(ObjectBuildingQuery.NO_LOCK);
query.setIsExecutionClone(true);
Object refreshedEntity = null;
refreshedEntity = uow.executeQuery(query);
if (refreshedEntity == null) {
// bug5955326, ReadObjectQuery will now ensure the object is invalidated if refresh returns null.
throw new EntityNotFoundException(ExceptionLocalization.buildMessage("entity_no_longer_exists_in_db", new Object[] { entity }));
}
} catch (RuntimeException exception) {