SpringData/QueryDSL 기본 리포지토리를 구축 중입니다. 다음과 같은 클래스 세트가 있습니다 :SpringData/QueryDSL에 쿼리 힌트를 적용하는 방법 findAll
@Entity
@Table(name="t_ows_jo")
@NamedEntityGraphs({
@NamedEntityGraph(
name="graph.Jo",
attributeNodes={
...
},
subgraphs={
...
}
)
})
public class Jo {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="id")
protected Long id;
private String joNo;
private String vin;
private Date dateFiled;
private Integer mileage;
private Vehicle vehicle;
private Dealer dealer;
private List<JoJobRequest> jobRequest;
private List<JoJobDone> jobDone;
...
}
@NoRepositoryBean
public interface BaseRepository<Entity, ID extends Serializable> extends JpaRepository<Entity, ID>, QueryDslPredicateExecutor<Entity> {
Entity retrieve(Map<String, Object> filters);
... more custom methods here
List<Entity> listAll(Map<String, Object> qryParam, int pageStart, int pageSize, Sort sortOrder);
}
public class BaseRepositoryImpl<Entity, ID extends Serializable> extends QueryDslJpaRepository<Entity, ID>
implements BaseRepository<Entity, ID> {
@PersistenceContext
private EntityManager entityManager;
//... more codes here
@Override
public List<Entity> listAll(Map<String, Object> qryParam, int pageStart, int pageSize, Sort sortOrder) {
Page<Entity> entities = null;
Pageable pageReq = new PageRequest(pageStart, pageSize, sortOrder);
BooleanBuilder where = new BooleanBuilder();
//build where here using qryParam
... some more codes here
//get a reference to JPAQuery and apply query hints
//EntityGraph graph = getEm().getEntityGraph("graph.Jo");
//query.setHint("javax.persistence.fetchgraph",graph);
entities = findAll(where.getValue(), pageRequest); //<<-----<<<< I want to apply query hints here
return entities.getContent();
}
}
위의 BaseRepositoryImpl은 원하는대로 잘 작동합니다. 쿼리 힌트를 적용 할 수 있도록 findAll
방법의 JPAQuery에 대한 참조를 얻을 수
//get a reference to JPAQuery and apply query hints
EntityGraph graph = getEntityManager().getEntityGraph("graph.Jo");
query.setHint("javax.persistence.fetchgraph",graph);
entities = findAll(where.getValue(), pageRequest); //<<-----<<<< I want to apply query hints here
이 가능 : 그러나, 나는 같은 EntityGraph 뭔가를 사용하여 쿼리 힌트를 추가 하시겠습니까?
findAll
에 쿼리 힌트를 적용하려면 어떻게해야합니까?
나는 JPA 엔진과 같이 Hibernate v4.3.11.Final과 함께 QueryDSL v3.6.5와 SpringData v1.8.2를 사용하고있다.
어떤 도움이나 제안이라도 대단히 감사하겠습니다.
미리 감사드립니다. 마리오
빠른 답장을 보내 주셔서 감사합니다. 나는 Q 경로를 통과하지 않기 때문에 솔루션을 사소한 조정할 필요가있다. 그럼에도 불구하고, 해결책은 제가 찾고있는 것이었고 그것은 정상적으로 작동했습니다. 많은 감사합니다. –