我是新来的休眠。我的问题是我有一个Oracle数据库。我在数据库中有一个视图。现在我想用hibernate在该视图中检索数据。有没有可能的解决方案?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.
<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());
}
一个视图是通过访问与表无关的数据,当您想添加,更新或从视图中删除时会出现问题。
请仔细阅读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;
...
}
然后以与正常表相同的方式查询实体。 工作在休眠4,春季4.
采取[这里](http://timezra.blogspot.de/2009/05/mapping-hibernate-entities-to-views.html)(我想)没有归属 – avalancha 2014-08-27 12:40:39