2009-08-10 6 views
0

hibernate section 5.1.3 끝에있는 예제는 매개 변수 전달에 대한 예제를 보여주지 않습니다.Hibernate의 subselect 태그에 매개 변수를 어떻게 전달합니까?

는 최대 절전 모드 매핑 뷰 과 기본 테이블 사이에 차이가 없습니다. 일부 DBMS는 에서보기를 제대로 지원하지 않지만 특히 업데이트가있는 을 수행하지만 이는 데이터베이스 수준에서 투명합니다. 때로는 보기를 사용하려고하지만 데이터베이스에 (예 : 기존 스키마)을 만들 수없는 경우가 있습니다. 이 경우, 당신은 불변을 매핑 할 수 있습니다 읽기 전용 엔티티를 주어진 SQL subselect 표현식으로 : 가능

<class name="Summary"> 
    <subselect> 
     select item.name, max(bid.amount), count(*) 
     from item 
     join bid on bid.item_id = item.id 
     group by item.name 
    </subselect> 
    <synchronize table="item"/> 
    <synchronize table="bid"/> 
    <id name="name"/> 
    ... 
</class> 

인가? 그렇다면 어떻게?

감사합니다, 프란츠

답변

1

내가 매핑 파일이 정적 설명처럼 때문에 그것이 가능하다고 생각하지 않습니다.

0

Hibernate 3 이후로이 유형의 읽기 전용 계산 필드를 매핑하기 위해 공식을 사용할 수있다. 예 :

@Formula("(SELECT b.BANK_NAME FROM " + 
     " BANK_INFORMATION b, BILLING_AGENT_BANK ba " + 
     " WHERE ba.CNPJ = COMPANY_CNPJ " + 
     " AND b.BANK_ID = ba.BANK_ID)") 
public String getBankName() { 
    return bankName; 
} 

이 예에서는 주석 속성입니다,하지만 당신은 매핑 파일에서 동일한 작업을 수행 할 수 있습니다.

0

에서 NHibernate에 :

<class name="Blog" mutable="false"> 
<subselect> 
    SELECT Blog.Id, Blog.Author, Blog.Title, Comment.Comment 
    FROM Blog INNER JOIN Comment ON Blog.Id = Comment.Blog_id 
    WHERE Comment.LanguageId = :blogcomment.languageId 
</subselect> 
<id name="Id"> 
    <generator class="assigned" /> 
</id> 
<property name="Author" /> 
<property name="Title" /> 
<property name="Comment" />