У меня есть объект, напрямую сопоставленный с пользовательским интерфейсом, в котором есть несколько таблиц поиска, в которых данные не изменились бы вообще.В моем контроллере я использую findAll в таблицах поиска, чтобы получить все значения и установить его для модели.
Основной объект
@Entity
public class MainEntity implements Serializable {
@OneToOne(cascade = CascadeType.ALL, optional=true)
@JoinColumn(name="lookup_entity_key")
private LookupEntity luentity;
}
Элемент поиска:
@Entity
@Table(name="lookup_entity")
@Cacheable
public class LookupEntity implements Serializable {
}
Я включил кэш второго уровня в файле persistence.xml.конфигурация ниже
<property name="hibernate.cache.use_second_level_cache" value="true" />
<property name="hibernate.cache.use_query_cache" value="true" />
<property name="hibernate.cache.region.factory_class" value="net.sf.ehcache.hibernate.SingletonEhCacheRegionFactory" />
<property name="javax.persistence.sharedCache.mode" value="ENABLE_SELECTIVE" />
FindALL Query Cache:
entityManager.createQuery("from " + this.entityClass.getName() )
.setHint("org.hibernate.cacheable", true)
.getResultList();
Когда запрос поступает из пользовательского интерфейса, он пытается вызвать методы findAll в объекте LookupEntity.По какой-то причине первый запрос правильно вызывает findAll sql, но последующий запрос вызывает SQL-запрос findById для всех строк, присутствующих в LookupEntity.Это ожидаемое поведение или что-то не так с моей конфигурацией.
Пожалуйста, помогите !!!
Спасибо!