2014-11-04 3 views
0

안녕에 선택 카운트를 추가 나는이 select 문을angel이라는 데이터 소스

SELECT c.*, count(r.competitorid) as num_comp, num_event.num_events 
from competition c left join regcomp r on c.competitionid = r.competitionid 
left join 
(
select competition.competitionid, count(e.competitionid) as num_events 
from competition left join `event` e on competition.competitionid = e.competitionid 
group by competition.competitionid 
) as num_event on c.competitionid = num_event.competitionid 
       )  
    AS winners ON winners.competitionid = c.competitionid; 

내 문제를해야 할 경우를 메서드 집합이 있다면 내가 따라 어떤 패턴을 알고, 또는하지 않도록되어있는 것을 I 이 테이블에 대한 데이터 소스를 생성하기 위해 호출해야합니다. IndexedContainer를 만들고 컨테이너 속성을 추가 한 다음 Vaadin 테이블에 추가 할 수 있습니다.하지만이 문제는 데이터를 유지하려고 할 때 나중에 그렇지 않으면 JPA를 사용할 수 없습니다. 처음에는 그것을 사용하십시오.

JPA를 사용하면 setVisibleColumns ("parent.child")를 통해 외래 키를 통해 참조 된 테이블에 매우 쉽게 액세스 할 수 있으므로 이론적으로 말하자면 올바른 항목 엔티티를 선택하여 단일 행에 대한 정보를 표시 할 수 있습니다 .

그러나 열 중 하나에 개수가 표시되는 테이블을 만들려는 경우 엔 분명히 계산식이 엔티티의 일부가 아니지만 엔티티의 일부가 아닌 경우 어떻게해야합니까? avg(), count() 등의 항목에 의해 생성 된 데이터가 포함 된 표에서 JPA의 이점.

PS 쿼리는 모든 경기를 보여주는 표와 해당 경쟁에 참가한 경쟁자 및 이벤트의 수를 검색합니다.

답변

1

이것은 사용하는 JPA 공급자에 따라 다릅니다. Hibernate를 사용할 때 this post에 언급 된 계산 된 속성을 사용할 수 있습니다.

@Formula("PRICE*1.155") 
private float finalPrice; 

또는 더 복잡한이 최대 절전 기능에 대한 자세한 내용은 other post에서

@Formula("(select min(o.creation_date) from Orders o where o.customer_id = id)") 
private Date firstOrderDate; 

봐 :

그것은 다음과 같은 주석을 제공합니다.

은 EclipseLink가/상단 링크를 위해 나는

+0

최대 절전 모드를 사용하고 있습니다. 덕분에 좋은 시작입니다. –

0

지속성는 "하드, 내구성"것들 당신의 클래스와 데이터베이스 테이블 사이의 강력한 링크를 의미 문제에 대한 해결책을 알고. 쿼리에서는 테이블이 아닌 쿼리에서 데이터를 가져 오므로이 컨텍스트에서 지속성에 대해 이야기하는 것은 올바르지 않습니다. 당신이 할 수있는 일

은 (JPATools로 자동 생성 수) 당신이 원하는 경우에 엔티티를 테이블에 당신이 사용자 정의 일을 사용자 정의 열,

을 추가하거나 데이터베이스보기를하고 만드는 것입니다 JPAContainer의 모든 권한

건배.

관련 문제