Вы должны исключить запрос, начинающийся с index
, чтобы избежать зацикливания, поэтому измените правила следующим образом:
RewriteEngine On
RewriteRule !^index\.php https://example.com/index.php%{REQUEST_URI} [R=301,L]
Примечание: очистите кеш браузера
Я назвал бы "afterInsert" на EntityPersister, который отображается на Ваш объект, так как Чтение-запись является асинхронной стратегией параллелизма. Я соединил это после просмотра Того, чтобы быть в спящем режиме 3,3 источников. Я не 100%, что это будет работать, но это выглядит хорошим мне.
EntityPersister persister = ((SessionFactoryImpl) session.getSessionFactory()).getEntityPersister("theNameOfYourEntity");
if (persister.hasCache() &&
!persister.isCacheInvalidationRequired() &&
session.getCacheMode().isPutEnabled()) {
CacheKey ck = new CacheKey(
theEntityToBeCached.getId(),
persister.getIdentifierType(),
persister.getRootEntityName(),
session.getEntityMode(),
session.getFactory()
);
persister.getCacheAccessStrategy().afterInsert(ck, theEntityToBeCached, null);
}
--
/**
* Called after an item has been inserted (after the transaction completes),
* instead of calling release().
* This method is used by "asynchronous" concurrency strategies.
*
* @param key The item key
* @param value The item
* @param version The item's version value
* @return Were the contents of the cache actual changed by this operation?
* @throws CacheException Propogated from underlying {@link org.hibernate.cache.Region}
*/
public boolean afterInsert(Object key, Object value, Object version) throws CacheException;
Я сделал это путем создания моего собственного поставщика кэша. Я просто переопределил EhCacheProvider и использовал мою собственную переменную для менеджера, таким образом, я мог возвратить его в помехах. После того как Вы получаете CacheManager, можно назвать manager.getCache (class_name) для получения Кэша для того типа объекта. Затем Вы создаете CacheKey с помощью первичного ключа, типа и имени класса:
CacheKey cacheKey = new CacheKey(key, type, class_name, EntityMode.POJO,
(SessionFactoryImplementor)session.getSessionFactory());
Кэш является по существу картой, таким образом, можно проверить, чтобы видеть, находится ли объект в кэше, или выполните итерации через объекты.
Мог бы быть способ получить доступ к CacheProvider при создании SessionFactory первоначально, который избежал бы потребности реализовать собственное.