2017-05-02 10 views
0

비 엔티티 클래스에 두 개의 엔티티를 결합하려고합니다.이 두 엔티티는 클래스의 속성으로 포함됩니다. 20 개 이상의 열이있을 것 비 엔티티 클래스의 두 엔티티 합치기

@Entity 
public class A { 
} 

@Entity 
public class B { 
} 

public class C { 
    private A a; 
    private B b; 
} 

내가 SqlResultSetMapping를 사용하여 솔루션을 찾았지만 내가 수동으로 A와 B의 각 열을 지정하지 않는, beacause를 :

예로서이 걸릴.

I 찾은 다른 용액 내 ideea의 객체 어레이 결과 [], 결과는 [0] 및 결과는 [1] B.

인 곳이었다 반환하는 JPQL 쿼리를 사용했던 둘의 조합 나는이 같은 참조 :

@SqlResultSetMapping(targetClass=C.class, 
entities={ 
@EntityResult (targetClass=A.class) 
@EntityResult (targetClass=B.class) 
} 

는 A와 B 모두 여러 열을 감안할 때, 내 문제를 해결하는 가장 좋은 방법은 무엇입니까?

답변

0

JPQL을 사용하는 경우 (최대 절전 모드에서도 작동해야 함) 결과 집합 클래스 전략을 활용할 수 있습니다.

1)는 C 클래스에 생성자를 추가

public C(A aEntity, B bEntity){ 
    this.a = aEntity; 
    this.b = bEntity; 
} 

2) 정상 쿼리를 만들고 생성자의 인수로 A와 B를 취할 것이다 완전한 C 클래스 이름과 함께 new 연산자를 사용 :

Query query = session.createQuery("select new com.mypkg.C(a as aEntity, b as bEntity) 
            from A a, B b where a.id = b.a_id"); 
List<C> cList = (List<C>)query.list(); 
+0

내가 얻을 :'라인 1 : 156 : 예기치 않은 토큰 : –

+0

A' 내 업데이트 예를 –

+0

여전히 같은 문제를보십시오. 이것이 유효한 예입니까? –