2012-03-03 2 views

ответ

2

Собственный запрос может быть для любой таблицы в хранилище данных ... независимо от того, основан ли на основе сущности или нет. Кэш L1, в общем, не имеет ничего общего с этим процессом, за исключением случаев, когда ваш класс результатов для вашего запроса является Entity.

+0

Итак, если я выполняю собственный запрос, где мой результат - это Entity, вы говорите, что в отношении кеша L1 он будет работать так же, как если бы я выполнял аналогичный запрос с использованием JPQL или CriteriaBuilder? – user1148956

+2

EntityManager (совместимой) JPA-реализации должен возвращать только один Entity для определенного идентификатора (т. Е. Только один, управляемый этим EM в любое время), поэтому, если запрос возвращает Entity с некоторым id, а этот id уже кэширован то он должен вернуть кешированный объект. – DataNucleus

+0

ОК - это имеет смысл. Таким образом, это звучит как в случае простого выбора, где return является Entity, не имеет значения, использую ли я Native SQL, JPQL или CriteriaBuilder. В таком случае, как это, есть какая-то польза от НЕ использования собственного SQL? – user1148956