2012-06-12 2 views
1

나는 10 개의 필드를 가지고 있으며 결과를 얻기 위해 약 5에서 6 개의 테이블을 포함하는 검색 화면을 가지고있다. 나는 사용자 지정 SQL 쿼리를 작성하고 값이 존재하는 경우에만 조건을 추가합니다.검색 화면에 대한 최대 절전 모드 사용자 정의 검색어

누구나 제안 할 수있는 방법이 올바른 방법인지 아니면 다른 방법이 좋을까요?

내 상황에 맞는 플러그인이나 추가 API를 사용할 수 없습니다.

StringBuffer sqlQuery = new StringBuffer(); 
sqlQuery.append (" select member.* from member, customer, case where customer.status='A'); 
if(firstName != null) 
sqlQuery.append("customer.firstName= :firstName"); 

if(caseid != null) 
sqlQuery.append("case.caseid =:caseid"); 

SQLQuery queryObj = createSQLquery(sqlQuery.toString()); 
queryObj.list(); 

부재, 고객, 케이스로 실제 테이블 곳이다.

UPDATE

내가 추가하고 위치를 문자열 버퍼에 미리

if(caseid != null) 
sqlQuery.append(" and case.caseid =:caseid"); 

and when queryObj is formed I am doing it as 
if(caseid != null) 
queryObj.setString("caseid", caseid); 

is there better way to add after queryObj (to combine both)? 

덕분 상태.

답변

2

아니요, 반드시 올바른 접근 방식은 아닙니다. SQL은 Hibernate를 사용할 때 선택되는 질의 언어가 아니다. 가능한 경우 HQL을 선호해야합니다. 또한 Hibernate는 동적 쿼리를 만들기 위해 정확하게 설계된 the Criteria API을 가지고있다.

+0

기준을 사용하여 5 개 이상의 테이블이 있다고 말했기 때문에 나는 서로를 참조하는 방법을 모른다. 그리고 내가 언급하면, 그들 중 일부는 일대 다, 다 대다, 많거나 많습니다. 나는 HQL을 사용하고 있는데, 다시 질문을 편집했다. 확인해보고 알려줘. 감사합니다 – changeme

+0

http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html_single/#querycriteria-associations. 나는 문서에 링크하는 것 이상의 것을 할 수 없다. 그것을 읽고, 이해하고, 실험 해보십시오. 3 분 안에 기준 마법사가 될 수 없습니다. 문제가 있다면 정확하게하려는 것을 설명하는 질문을 게시하고 관련된 코드와 관련된 엔티티의 매핑에 참여하십시오. –

+0

업데이트를 한 번보고 조금 더 자세히 도와 주시겠습니까? – changeme

관련 문제