hibernate如何从现有数据库视图中检索数据?

我是新来的冬眠。 我的问题是我有一个Oracle数据库。 我在数据库中有一个视图。 现在我想使用hibernate来检索该视图中的数据。 有没有可能的解决方案?

非常感谢你。

下面的代码片段可以解决您的问题,该问题已从教程中提取:将Hibernate实体映射到视图

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.  finally some test !... @Test public void findTheCameronsInTheView() throws Exception { final List 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()); } 

视图来自访问与表无关的数据,当您想要从视图添加,更新或删除时会出现问题。

请阅读http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html/querysql.html

它与映射普通数据库表非常相似。 创建实体并将您的视图名称用作表名。

 @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; ... } 

然后以与普通表相同的方式查询实体。 在Hibernate 4,Spring 4中工作。