При использовании аннотации @Cacheable
(org.springframework.cache.annotation.Cacheable
) в хранилище с настраиваемым ключом, таким как имя, возникает проблема запуска дополнительного запроса в поле id для каждого последовательного запроса.
См. Код хранилища ниже:
public interface StatusRepository extends JpaRepository<Status, Integer> {
@Cacheable(value = "StatusByStatusNameCache" , key="#statusName")
public Status findByStatusName(String statusName);
}
Выше видно, что кеш определен только для имени статуса, теперь после запуска первого запроса получил следующую консоль Hibernate с запросом на имя статуса:
Hibernate: select status0_.status_id as status_i1_7_, status0_.status_name as status_n2_7_ from status status0_ where status0_.status_name=?
Hibernate: select event0_.event_id as event_id1_3_, event0_.event_name as event_na2_3_ from events event0_ where event0_.event_name=?
теперь нажмите еще один второй запрос, получая запрос гибернации в консоли с идентификатором:
Hibernate: select event_.event_id, event_.event_name as event_na2_3_ from events event_ where event_.event_id=?
Hibernate: select requestcha_.request_channel_id, requestcha_.request_channel_name as request_2_6_ from request_channels requestcha_ where requestcha_.request_channel_id=?
Hibernate: select status_.status_id, status_.status_name as status_n2_7_ from status status_ where status_.status_id=?
Я не понимаю, почему этот дополнительный запрос запускается, так как запрос status_name кэшируется, но как остановить этот запрос идентификатора при каждом последующем вызове после первого запрос.