2011-01-13 5 views

답변

5

이하 스 니펫으로 문제를 해결할 수 있습니다.

Database Query 

CREATE OR REPLACE VIEW cameron AS 
    SELECT last_name AS surname 
    FROM author 
    WHERE first_name = 'Cameron'; 

view entity 

@Entity 
@NamedNativeQuery(name = "findUniqueCameronsInOrder", query = "select * from cameron order by surname", resultClass = Cameron.class) 
public class Cameron implements java.io.Serializable { 

    private static final long serialVersionUID = 8765016103450361311L; 

    private String surname; 

    @Id 
    @Column(name = "SURNAME", nullable = false, length = 50) 
    public String getSurname() { 
     return surname; 
    } 

    public void setSurname(final String surname) { 
     this.surname = surname; 
    } 
} 

Hibernate mapping file. 

<mapping class="examples.hibernate.spring.query.domain.Cameron" /> 

finally some test !... 

@Test 
    public void findTheCameronsInTheView() throws Exception { 
     final List<Cameron> camerons = findUniqueCameronsInOrder(); 
     assertEquals(2, camerons.size()); 
     final Cameron judd = camerons.get(0); 
     final Cameron mcKenzie = camerons.get(1); 
     assertEquals("Judd", judd.getSurname()); 
     assertEquals("McKenzie", mcKenzie.getSurname()); 
    } 
+0

[여기] (http://timezra.blogspot.de/2009/05/mapping-hibernate-entities-to-views.html) – avalancha

2

그것은 '매핑 일반 데이터베이스 테이블과 매우 유사합니다. 엔티티를 만들고 뷰 이름을 테이블 이름으로 사용하십시오.

@Entity 
@Table(name = "rc_latest_offer_details_view") 
public class OfferLatestDetailsViewEntity { 

@Id 
@Column(name = "FK_OFFER_ID") 
private int offerId; 

@Column(name = "MAX_CHANGED_DTM") 
@Type(type = "org.jadira.usertype.dateandtime.joda.PersistentDateTime") 
private DateTime changedDateTime; 

private BigDecimal price; 
... 
} 

그런 다음 일반 테이블과 동일한 방법으로 엔티티를 쿼리하십시오. 최대 절전 모드 4, 스프링 4에서 작업.

관련 문제