hibenate hql 지정 한 필드 를 조회 하고 결과 집합 을 가 져 옵 니 다.

hibenate 에서 hql 구문 으로 실체 류 를 조회 하고 list 방법 으로 결 과 를 하나의 List 로 되 돌려 줍 니 다. 이 List 에서 포 장 된 대상 은 다음 과 같은 세 가지 상황 으로 나 눌 수 있 습 니 다. 1. 모든 필드 를 조회 하 는 경우, 예 를 들 어 "from 실체 류", list 에서 포 장 된 대상 은 실체 류 자체 이 고 각 속성 은 채 워 집 니 다.2. 한 필드 만 조회 합 니 다. 기본적으로 list 에 포 장 된 것 은 Object 대상 입 니 다.3. 두 개 이상 의 필드 를 조회 합 니 다. 기본 적 인 상황 에서 list 에 포 장 된 것 은 Object [] 이 고 길 이 는 조회 한 필드 수 와 일치 합 니 다.
뒤의 두 가지 상황 에 대해 라벨 로 옮 겨 다 닐 때 불편 합 니 다. 실체 류 의 대상 으로 직접 전환 할 수 없 기 때 문 입 니 다.비교적 간단 한 해결 방법 은:
의: hql 에서 select new 패키지 이름 을 사용 합 니 다. 클래스 이름 (속성 1, 속성 2...) from 실체 류 를 사용 하 는 동시에 실체 류 에 참 조 를 가 진 구조 방법 을 추가 합 니 다. 매개 변수의 개수 와 순서 가 (속성 1, 속성 2...) 와 일치 합 니 다. 그러면 우리 가 얻 은 list 에 저 장 된 것 은 실체 류 의 대상 이 고 조회 한 속성 이 채 워 져 서 사용 하기에 더욱 편리 합 니 다.
의: hql 조회 다 중 표 부분 필드, select new 패키지 이름. 표 1 실체 클래스 이름 (표 1. 속성 1, 표 2. 속성 2...) from 표 1 실체 클래스, 표 2 실체 클래스 where 표 1. ID = 표 2. ID (즉 관련 필드), 반환 할 표 1 실체 클래스 에 표 2 의 속성 과 인삼 을 가 진 구조 방법, 매개 변수의 개수 와 순서 와(표 1. 속성 1, 표 2. 속성 2...) 일치 유지
예 를 들 어 Problem 의 pid, score, title, totalAccept, totalSubmission, unSee 를 조회 하려 면
public class Problem {
	private int pid;
	private int score;
	private int timeLimit;
	private int memoryLimit;
	private int totalAccept;
	private int totalSubmission;
	private int unSee;
	private String title;
	private String description;
	private String input;
	private String output;
	
	public Problem(int pid, int score,String title, int totalAccept, int totalSubmission,
			 int unSee) {
		super();
		this.pid = pid;
		this.score = score;
		this.totalAccept = totalAccept;
		this.totalSubmission = totalSubmission;
		this.unSee = unSee;
		this.title = title;
	}
	//  getter   setter
}

검색 어 는 다음 과 같다.
		Query query=session.createQuery("select new Problem(pid,score,title,totalAccept,totalSubmission,unSee) from Problem order by pid");
		//query.setFirstResult(firstResult); //    
		//query.setMaxResults(maxResutl);
	
		List<Problem> problems=query.list();//     Problem  

좋은 웹페이지 즐겨찾기