2017-04-22 2 views
2

안녕 얘들 결과를 반환하도록 연결을 사용하여 :최대 절전 모드 기준, 내가 고객 기업 내부의이 매핑이 제한에 의해

@OneToOne(cascade={javax.persistence.CascadeType.ALL}) 
@JoinColumn(name="address") 
private Address address; 

을 그리고 난 내 DAO 클래스에서이 방법이 있습니다

@SuppressWarnings("unchecked") 
public List<Customer> getCustomersFromThisAddress() throws Exception{ 
    sessao = null; 
    try{ 
     sessao = HibernateUtil.getSessionFactory().openSession(); 
     Customer customer= new Customer(); 

     Criteria criteria = sessao.createCriteria(customer.getClass()) 
        .createAlias("address", "a") 
         .add(Restrictions.ilike("a.area", "bedford")); 
     return (List<Customer>) criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY).list(); 
    } catch (Exception e) { 
     return null; 
    } finally { 
     sessao.close(); 
    } 
} 

I 베드포드 지역의 모든 고객을 돌려주고 싶습니다 ... 나는 최대 절전 모드와 기준에 익숙하지 않습니다. 제발 도와주세요.

+0

오류 또는 빈 목록 만 표시 되나요? –

+0

@MaciejKowalski 빈 목록 – OzmaTis

답변

1

당신은 ilike를 사용하는 경우에 대한 두 가지를 기억해야한다 :

A) 기본 데이터베이스가이를 지원 또는 동등한 기능을 할 수 있어야합니다. MatchMode를 지정하거나 두 번째 인수에 % 문자를 추가하지 않고

B), 당신의 문은 대소 문자를 구분하지 동등하다.

그래서 당신은 다음 중 하나를 사용하여 단순히 어딘가에 bedford 문자열이 포함 된 텍스트를 검색하려면 다음

.add(Restrictions.ilike("a.area", "%bedford%")); 

또는

.add(Restrictions.ilike("a.area", "bedford", MatchMode.ANYWHERE)); 
0

나는 빈리스트를 '[얻고 있었다 ] '내가 실수를했다는 것을 깨달았습니다. (제한 ... 행! 주소 테이블의'영역 '열 데이터는 모두'베드 포드 '로 기록됩니다.

이를 읽은 후 : https://www.tutorialspoint.com/hibernate/hibernate_criteria_queries.htm

나는 단지

Criteria criteria = sessao.createCriteria(customer.getClass()) 
       .createAlias("address", "a") 
        .add(Restrictions.ilike("a.area", "bedford")); 

Criteria criteria = sessao.createCriteria(customer.getClass()) 
       .createAlias("address", "a") 
        .add(Restrictions.like("a.area", "bedford")); 

내 목록을 반환하도록 변경하는 데 필요한 것을 발견 ...이 다른 사람을 도움이 될 것입니다 희망!