2016-08-19 2 views
0

내가 복합 기본 키복합 기본 키, 거기에

public class MainPk{ 

    private int keyOne; 
    private int keyTwo; 

// getters and setters 
    } 

을 가지고 있고이 두 값이 모두

select * from ..... where keyOne = ? and KeyTwo = ? 

를 검색 쿼리에서 그러나 단지 KeyOne을 설정 한 경우에만 그들 중 하나에 의해 검색 어쨌든 하나만 검색 하시겠습니까? 나는 조건이나 쿼리를 사용할 수 있다는 것을 알고 있습니다.이 방법으로 가능한지 묻습니다.

+0

아마도 새 쿼리를 쓸 수 있습니까? – bradimus

+0

본인이 작성한 사용자 정의 쿼리를 사용하고 있습니까? – ByeBye

답변

0

문제는 당신이 아마 다음과 같은 일을하고있다 : 최대 절전 모드의 설명서를 검토 복합 ID의 단일 값에 대해 질의합니다. Hibernate는 복합체에서 null 값을 리터럴 null으로 변환할지 또는 으로 무시할지 여부를 알지 못합니다.

List<YourEntity> results = session 
     .createQuery("FROM YourEntity e WHERE e.id.keyOne = :keyOne") 
     .setParameter("keyOne", someValue) 
     .getResultList(); 
0

속성을 검색 할 수 있습니다. Criteria and Restriction 수업을 왜 사용하지 않습니까? 그들은 당신이 어떤 속성을 기반으로 쉽게 쿼리를 할 수 있습니다. 당신은 당신의 쿼리를 재구성하고 만 명시 적으로 추구하고 무엇을 달성 할 수

MainPk id = new MainPk(); 
id.setKeyOne(someValue); 

List<YourEntity> results = session 
     .createQuery("FROM YourEntity e WHERE e.id = :id") 
     .setParameter("id", id) 
     .getResultList(); 

:

https://docs.jboss.org/hibernate/orm/3.3/reference/en/html/querycriteria.html