Eclipse에서 작동하지 않는 쿼리 힌트 2.3.2/2.6.1에서 데이터를 가져 오는 데 사용되는 경우 레벨 캐시 중고 힌트,Eclipse Link와 함께 javax.persistence.cache.retrieveMode 및 javax.persistence.cache.retrieveMode가 NamedQuery와 작동하지 않음 ORM
@QueryHint(name = "javax.persistence.cache.retrieveMode", value = "USE"),
@QueryHint(name = "javax.persistence.cache.storeMode ", value = "USE")
아래 옵션으로 시도했습니다.
1. Added JPA Hints to Named query itself
@NamedQuery(
name = TestEntity.FIND_BY_CODE,
query = "select t from Test t where t.code = :code",
hints = {
@QueryHint(name = "javax.persistence.cache.retrieveMode", value = "USE"),
@QueryHint(name = "javax.persistence.cache.storeMode ", value = "USE") })
2. Adding hints to the Entity Manager Itself after injecting it
em.setProperty("javax.persistence.cache.retrieveMode", CacheRetrieveMode.USE);
em.setProperty("javax.persistence.cache.storeMode", CacheRetrieveMode.USE);
3. Added JPA hints at the time of Query execution
em.createNamedQuery(TestEntity.FIND_BY_CODE,
AlertCategoryType.class).setHint("javax.persistence.cache.retrieveMode", CacheRetrieveMode.USE)
.setHint("javax.persistence.cache.storeMode", CacheStoreMode.USE)
.setParameter("code", code).getSingleResult();
위의 힌트는 전혀 사용되지 않았습니다. 그럼 내가 찾은 세 가지 다른 옵션에 디버깅을 시도했다 이러한 힌트를 설정 한 후에 형성 데이터베이스 쿼리는 아래의 키/값 쌍으로 힌트를 전달합니다.
eclipselink.query.hints => {javax.persistence.cache.retrieveMode=USE, javax.persistence.cache.storeMode=USE}
여기서 eclipselink.query.hints는 JPA 힌트를 설정 한 경우에도 핵심입니다. 이것은 우리가 이것을 바꾸기 위해 통제 할 수없는 것입니다.
하지만 Eclipse Link에서 제공하는 힌트를 아래와 같이 전달하면 예상대로 작동하기 시작하고 결과가 캐시가 아니라 DB에서 가져옵니다.
eclipselink.query.hints => {eclipselink.query-results-cache.size=500, eclipselink.query-results-cache=true}
즉, 이클립스 링크를 사용할 때 쿼리에서 볼 수있는 [위 그림] 키에 따라 Eclipse 링크 제공 힌트 만 인식한다.
글래스 피시 4.1 [payara를 제공
- Eclispe 링크를
환경 내가 사용 작업 JPA 힌트를 얻기 위해 주위 2.3.2/2.6.1
- 박차 핀을 모든 작업을한다 제안하십시오 ]
- Java8/JEE7