使用Hibernate 3.6.8.Final和Spring 3.0.5.RELEASE,我想添加一些公共DAO功能的類有多個實現覆蓋較高的實現特定的類,但它doesn不適用於DetachedCriteria。休眠使用DetachedCriteria與接口
實施例:
在基類:
public interface ICat {
public void setMeowSound(String meow);
public String getMeowSound();
}
然後,每個繼承項目將定義休眠註釋。
例如
@Entity
@Table(name="SQUAWKY_CATS")
public class SquawkyMeowingCat implements ICat, Serializable {
@Id
@Column(name="SQUAWK_NAME")
private String meow;
public String getMeowSound() {
return meow;
}
public void setMeowString(String meow) {
this.meow = meow;
}
}
這意味着我可以使用:
Criteria criteria = Session.createCriteria(ICat.class);
和Spring/Hibernate知道它拉了爲ICat註釋從具體項目的具體繼承。
但是,如果我嘗試做:
DetachedCriteria subQuery = DetachedCriteria.forClass(ICat.class,"inner"); // etcetera
然後我在運行時爲ICat得到一個未知的實體。
現在這個有意義的,因爲在第一個實例創建其關閉會話,因此已經嘗試做
criteria.list()
當所有的,它需要而的DetachedCriteria的配置是一個靜態方法但它的錯誤到那個時候它已經拿起Session並且應該知道ICat實際上是一個SquawkyMeowingCat,它具有所有的註釋。
所以我的問題有兩個部分:
1)這是已知的行爲,並會永遠這樣嗎?
2)任何人都可以想到一個簡單的方法,而不使用一個接口和具體的ClassHolder,它返回它需要創建的類的實例嗎?