我有table1和table2具有相同的模式...我想只有一个实体而不是两个(因为字段将是相同的).我如何在使用XML映射的hibernate中实现这一点.所以我的目标是当我在DAO中查询时,如果两个表都映射到同一个实体,它将如何知道要从哪个表中获取.
我试图不创建父类,然后创建两个子类.
谢谢
抱歉回复晚了.我已经在stackoverflow上多次回答了这个问题.
要将两个相同的表映射到一个实体类,您需要使用entity-nameHibernate或NHibernate 的属性.
文档在这里:http: //docs.jboss.org/hibernate/core/3.2/reference/en/html/mapping.html#mapping-entityname
例如,要将单个Order类映射到Order和OrderHistory表,您可以创建一个映射文件,使用new entity-names(Order和OrderHistory)将订单类映射到两个表,如下所示:
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="DomainModel.Order, DomainModel"
table="Orders" entity-name="Order">`
<id name="_id" access="field" column="OrderId">
<generator class="assigned"/>
</id>
<property name= ...>
</class>
<class name="DomainModel.Order, DomainModel"
table="OrderHistories" entity-name="OrderHistory">
<id name="_id" access="field" column="OrderId">
<generator class="assigned"/>
</id>
<property name= ...>
</class>
</hibernate-mapping>
Run Code Online (Sandbox Code Playgroud)
然后,根据您需要的实体类型,您只需调用适当的Session方法:
_session.Save("Order", myOrder)
Run Code Online (Sandbox Code Playgroud)
要么
_session.Save("OrderHistory", myOrder)
Run Code Online (Sandbox Code Playgroud)
简单,不是吗?
通常entity-name必须在所有Hibernate调用中替换类名.
| 归档时间: |
|
| 查看次数: |
10654 次 |
| 最近记录: |