이미 주석에 요약되어 있듯이 NamedQuery에 대한 오해가 있습니다. 결과는 캐시에 저장되지 않지만 쿼리 SQL은 캐시에 저장됩니다. 당신은 당신을 쿼리 객체 (예를 들어 EntityManager.createNamedQuery ("nameOfYourQuery"))과는 EclipseLink로 작업하는 경우
....
그럼에도 불구하고 때때로의 EntityManager는 몇 가지 캐시 나는 당신이에 대한 솔루션을 필요로 추측
@NamedQuery(name = "something", query = "SELECT n FROM something",
[email protected](name=QueryHints.REFRESH, value=HintValues.TRUE))
또 다른 방법 위스콘신 :
이
Query query = EntityManager.createNamedQuery("nameOfYourQuery");
query.setHint(QueryHints.REFRESH, HintValues.TRUE);
query.getResultList();
또한 설정 쿼리가이 같은 NamedQuery에 직접 힌트 수 있습니다 : 다음과 같은 작업을 수행 할 수 가능한 쿼리 힌트의 목록
query.setHint(QueryHints.CACHE_USAGE, CacheUsage.DoNotCheckCache);
, the EclipseLink docs를 보라 : 번째 쿼리 힌트는이 하나가 될 것입니다.
당신은 완전히 당신은 또한 당신의 persistence.xml
에서 다음을 시도 할 수 있습니다 캐시 데이터베이스 결과를 비활성화하려면 :
<property name="eclipselink.query-results-cache" value="false"/>
명명 된 쿼리를 한 번 컴파일 (SQL로). JPA 공급자 별 쿼리 결과 캐싱을 설정하지 않은 경우 항상 실행되어야합니다. 하지만 – DN1
@ DN1을 사용 설정 한 것을 정의하지 않은 경우 어디에서 그런 구성을 찾을 수 있습니까? 왜냐하면 나는 어떤 구성도하지 않았기 때문입니다! –
EMF를 정의 했으므로 "일부"구성을 수행했습니다. LOG가있어서 어떤 SQL이 호출되는지 볼 수 있습니다. – DN1