@Override public Period reloadPeriod( Period period ) { Session session = sessionFactory.getCurrentSession(); if ( session.contains( period ) ) { return period; // Already in session, no reload needed } Integer id = PERIOD_ID_CACHE.get( period.getCacheKey(), key -> getPeriodId( period.getStartDate(), period.getEndDate(), period.getPeriodType() ) ); Period storedPeriod = id != null ? getSession().get( Period.class, id ) : null; return storedPeriod != null ? storedPeriod.copyTransientProperties( period ) : null; }