當默認變壓器使用,預計類爲休眠實體意味着它必須用一些表,並在是
Query query=session.createQuery(hql.toString()).setResultTransformer(Transformers.aliasToBean(B.class));
乙第二殼體被映射不冬眠實體(未映射到任何表其簡單的POJO沒有任何hibernate特定的註釋)
例如 有次我們有一個類,我們想根據查詢返回的數據填充數據。這個類是一個簡單的POJO,而不是一個Hibernate實體,所以Hibernate不會識別這個類。 這可以通過使用變形金剛在休眠中完成。讓我們來看一個簡單的例子,展示如何使用變形金剛。首先,讓我們看看一個名爲「UserActivityStat」的簡單POJO類。 該課程包含一些統計信息。我們希望直接通過運行Hibernate HQL來填充實例的統計信息。
public static class UserActivityStat{
private int totalPhotos;
private int totalViews;
public UserActivityStat() { }
public int getTotalPhotos() {
return totalPhotos;
}
public void setTotalPhotos(int totalPhotos) {
this.totalPhotos = totalPhotos;
}
public int getTotalViews() {
return totalViews;
}
public void setTotalViews(int totalViews) {
this.totalViews = totalViews;
}
}
現在,讓我們來看看一個簡單的方法,即使用Hibernate HQL和變壓器類填寫「UserActivityStat」數據
public UserActivityStat getUserActivityStat(User user) {
return (UserActivityStat) hibernateSession.createQuery(
"select count(*) as totalPhotos, sum(p.views) as totalViews " +
"from Photo p " +
"where p.user = :user " +
"p.dateCreated <= :now")
.setParameter("user", user)
.setTimestamp("now", new Date())
.setResultTransformer(Transformers.aliasToBean(UserActivityStat.class))
.uniqueResult();
}
注意例如,每2列的有一個別名。此別名必須是「UserActivityStat」類中屬性的名稱。還要注意沿着「變形金剛」類使用「setResultTransformer」。
請在這裏發佈第二個問題的鏈接。這將有助於解決這個問題的人。 –