這remplaced是情景:實體名稱越來越命名查詢
- 我有2類與Hibernate映射:「富」和「EnhancedFoo」
- 兩個clases被映射到同一個表「富」
- EnhancedFoo延伸富
Foo.hbm.xml包含一個名爲查詢 「查找活動的Foo」 至極是這樣的:
from Foo foo where foo.active = true
,如果我嘗試加載配置我得到這個異常:
could not resolve property: active of: EnhancedFoo [
from EnhancedFoo foo where foo.active = true
]
至極是一種正確的,因爲在EnhancedFoo.hbm.xml沒有一個對應的屬性「活躍」,但隨後爲什麼hibernate用「EnhancedFoo」替換「Foo」?
這是我已經試過:
嘗試在映射文件添加一個 「enity-name」 屬性,像這樣:
<class name="myproject.data.entity.Foo" table="foo" entity-name="Foo">
.......
<class name="myproject.data.entity.EnhancedFoo" table="foo" entity-name="EnhancedFoo">
,然後配置加載罰款,但每當我試圖插入一個Foo我得到這個:
org.hibernate.MappingException: Unknown entity: myproject.data.entity.Foo
這些代碼的相關部分:在advace
//Foo.java
public class Foo
{
private long id;
private boolean active;
// getters and setters
}
//EnhancedFoo.java
public class EnhancedFoo extends Foo
{
private String extraProperty
// getter and setter
}
//Foo.hbm.xml
//.....
<class name="myproject.data.entity.Foo" table="foo" entity-name="Foo">
<id column="id" name="id">
<generator class="assigned"/>
</id>
<property name="active" column="active" />
</class>
<query name="find_active_foos">
<![CDATA[
from Foo foo where foo.active = true
]]>
</query>
//EnhancedFoo.hbm.xml
//.....
<class name="myproject.data.entity.EnhancedFoo" table="foo" entity-name="EnhancedFoo">
<id column="id" name="id">
<generator class="assigned"/>
</id>
</class>
謝謝!
在同一張表上映射兩個實體沒什麼意義。你爲什麼做這個? –
對於這個延遲感到抱歉,實際上Foo是一個巨大的單片式的do-everything-class,而團隊不再接觸什麼,所以我們試圖映射第二個類,並且僅僅爲了持久化,因爲實例化Foo做了很多後面的事情場景在其構造函數中工作=( – Harima555