2014-09-30 1 views
2

세 클래스가 있습니다. ClassA와 ClassB는 데이터베이스에 매핑 된 고전적인 POJO 엔티티입니다. 제 3의 ClassC가 HQL을 사용하여 데이터베이스에서 (특정 테이블과 매핑되지 않은) 특정하고 복잡한 쿼리를 수행하기를 원합니다. ClassC에 @Entity 주석을 추가하고 읽기 전용으로 유지할 수 있습니까? 나는이 문서를 통해 갈거야JPA/HIBERNATE 비 POJO 개체 처리

다음 (샘플) SQL 문을지도 할 수있는 방법을 알아 내기 위해 : EMP, 정체성의 도메인 객체와 매핑을 만들려하지

select 
a.id, b.name, c.city 
from 
emp a, identity b, address c 
where 
a.id = b.id and a.id = c.id 

내가 할 및 주소.

내가 원한 것은 SQL 문 출력에 매핑 된 하나의 개체를 갖는 것입니다.

public class Data { 
private int id; 
private String name; 
private String city; 
// ... and other details ... 
} 

기술적으로 저장 프로 시저 또는보기의 작업이어야합니다. 아쉽게도 데이터베이스를 변경할 수 없습니다.

도움/의견을 보내 주시면 감사하겠습니다.

+0

왜 @Entity를 사용하여 HQL 쿼리를 생성하기위한 클래스를 만들고 싶습니까? 클래스에 DB에 매핑 테이블이있는 경우에만 엔터티 주석을 사용해야합니다. – Chaitanya

+0

사실 나는 classC가 일부 보고서를 수행하기를 원합니다. 그리고 나는 classE 나 ClassB를 @Entity annotation과 함께 사용하는 것처럼이 클래스를 사용하고 싶다. 이 클래스 C에서 모든 필드는 특정 HQL 요청의 결과이므로 내 애플리케이션이 여전히 MVC 패턴과 일치합니다. – user3770624

답변

1

매우 복잡한 SQL 쿼리를보기로 만들고 엔티티를 매핑 할 수 있습니다. 기본적으로보기는 단지 읽기 전용 테이블입니다 (오라클에서 읽기/쓰기로 만들 수 있지만 다른 이야기입니다 :)) 따라서 모든 최대 절전 모드 매핑은 읽기 전용 엔티티로 잘 작동합니다. 나는 평범한 Hibernate와 hbm 파일을 사용하여 몇 년 전에 그것을 해왔다. JPA 나 주석을 사용 해 본 적이 없지만 왜 작동하지 않는지 알 수는 없습니다.

+0

답변 해 주셔서 감사합니다. 그것은 좋은 접근 방식이지만 데이터베이스를 수정하기 만하면 HQl 요청을 수행하고 각 HQL 요청을 classC 필드에 저장하고 싶습니다. 그리고 @Entity 클래스를 사용하는 것처럼 classC를 사용하려고합니다. – user3770624