我的table1和table2具有相同的架构…,我只想拥有一个实体,而不是两个(因为字段将是相同的)。在XML映射的hibernate状态下,我将如何实现这一点。所以我的目标是当我在DAO中进行查询时,如果两个表都映射到同一实体,它将如何知道要从哪个表中提取。
我试图不创建父类,然后再创建两个子类。
谢谢
抱歉回复晚了。我已经在stackoverflow上回答了几次这个问题。
要将两个相同的表映射到一个实体类上,需要使用entity-nameHibernate或NHibernate 的属性。
entity-name
文档在这里:http : //docs.jboss.org/hibernate/core/3.2/reference/en/html/mapping.html#mapping- entityname
例如,要将单个类Order映射到Order和OrderHistory表,请创建一个映射文件,该文件使用new entity- names(Order和OrderHistory)将订单类映射到两个表,如下所示:
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>
然后,根据所需实体的类型,您只需按以下方式调用适当的Session方法:
_session.Save("Order", myOrder)
要么
_session.Save("OrderHistory", myOrder)
很简单,不是吗?
通常,entity-name必须在所有Hibernate调用中替换类名。