2017-02-21 2 views
1

나는 그들의 사이트의 dropwizard 문서 섹션에서 코드 예제를 뒤 따르고 ID로 내 User 객체를 찾기 위해 최대 절전 모드로 작업 할 수있었습니다. (고유 한 사용자 이름을 유지를 포함하여 기능의 다양한 조각을위한 -, 나의 다음 문제는 내가 또한 내가 이름으로 찾을 수있을 것입니다함으로써이 유사한 무언가를 원하는 지금Dropwizard Hibernate - ID가 아닌 값으로 엔티티를 찾으십니까?

// Finds a single user, by their ID. 
public User findOne(String id) 
{ 
    get(id); 
} 

: 어느 다음 코드로 괜찮 았는데

// Finds a single user, by their ID. 
public User findOne(String name) 
{ 
    get(name); 
} 

그러나이 작동하지 않으며, ID 필드 이름과 일치하는 위치를 가리키고 값에 대한 테이블을 검색합니다을 ... I : 등록 단계)

에서 나는 다음에 내 코드를 조정 시도 이것은 자동으로 기본 동작이라고 생각해보십시오. 칼리가 기본 키 필드 또는 다른 것을 검색합니까?

어쨌든 다른 분야에서 검색을 수행 할 수있는 방법이 있습니까?

답변

1

당신은 사용해야합니다 Criteria (org.hibernate.Criteria)

public List<User> findOne(String name) { 

    Criteria c = criteria().add(Restrictions.eq("name", name)); 
    return list(c); 
} 

당신은 내가 실제로 시도했다

Criteria c = criteria() 
      .add(Restrictions.eq("accountId", accountId)) 
      .add(Restrictions.eq("email",email)); 
    return Optional.fromNullable(uniqueResult(c)); 
+0

필요하면 당신은 그것을 혼합 할 수 있으며, 내 나머지를 통해 DAO를 타격하고 경우에 작동 엔드 포인트 - 인증자를 사용하여 아무것도하지 않으려 고 할 때. – MickeyThreeSheds