2016-06-09 4 views
1

내 프로젝트에서는 (각 고객에 대해) 다중 소유 기능을 구현해야한다. 개념은 분리를 위해 모든 엔티티에 속성 (customer_id)을 저장하는 것입니다.Spring-JPA : JPA 쿼리를 일반적으로 확장하기

한 고객의 데이터를 얻으려면이 속성으로 SQL을 확장해야합니다.

예 :

billRepository.findByDateAndCustomerId(date, customerId); 

결과는

select * from bill where date = ? and customer_id = ? 

입니다하지만

billRepository.findByDate(date); 

같은 방법을 갖고 싶어 그 결과는 위와 같이 동일해야한다.

select * from bill where date = ? and customer_id = ? 

일반적인 방식으로 customer_id를 삽입 할 수 있습니까 (예 : sql 전처리 기)? spring-jpa 또는 JPA (최대 절전 모드)로 어떻게 할 수 있습니까?

감사 chokdee

답변

-1

나는 JPA API는 나 최대 절전 모드 나 다른 ORM 프레임 워크는 이러한 기능을 제공하는 의심한다. 사용하기 어려울 것입니다. customer_id가 상수가 아니므로 올바른 값을 입력하는 방법은 무엇입니까? 어떤 쿼리를 변경해야하는지 알 수 있습니까?

더욱 악화 되겠지만 내 의견으로는 이것이 당황 할 것입니다. 숨겨진 방법으로 쿼리를 변경하면 SQL 삽입을 허용 할 수 있습니다.

필요한 새로운 절을 추가하기 위해 API의 일부 메서드를 재정의 할 수도 있지만 좋은 생각으로 보일 수 없습니다. dinamic select 쿼리를 작성하고 가능한 한 코드를 변경하지 않는 적절한 방법은 Criteria 및 Predicate 인터페이스를 사용하는 것입니다.

+0

포스터가 JPA를 요청했지만 이것이 JPA가 아니기 때문에 JPA 기준을 사용하여 넣은 것을 다시 작성할 수 있습니까? –

+0

죄송합니다. 아마 오해했을 것입니다. 하지만 SQL을 직접 사용하지 말라는 의미입니다. JPA를 사용하여 customer_id를 숨겨진 방법으로 주입합니다. – chokdee