当前位置: 首页 > 面试题库 >

将两个相同的表(相同的架构…)映射到Hibernate中的相同实体

白永昌
2023-03-14
问题内容

我的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- namesOrderOrderHistory)将订单类映射到两个表,如下所示:

<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调用中替换类名。



 类似资料:
  • 问题内容: 请帮我解决这个问题。 我有2个相同的表,一个是时间表,另一个是timetable_bk。这两个表具有相似的属性或字段。现在,我想将2个表映射到一个实体类(alltimetable)。 我已经尝试过Inheritance.TABLE_PER_CLASS策略,但是当我从AllTimetable查询使用时。它什么也没返回。 请帮我。我搜索了很多次,但是还没有得到答案。 最好的祝福。 问题答案

  • 我有一个pojo类,我在其中使用Hibernate注释。在我的数据库中,我有两个模式相似的表。我想知道在hibernate注释中是否有任何方法可以将同一个pojo类用于这两个表。请告诉我怎么做。

  • 我的应用程序中有两个方法,它们使用相同的请求映射和不同的(http)方法 是否有可能在不同的控制器中定义它们,或者我应该考虑一些(可怕的)变通方法(比如重命名一个URL)?

  • 问题内容: 我有一个包含两个字段的表,我想要两个对象。 第一个只有field1 第二个有两个领域 我使用加载每个 我想做的就是扩展。我将如何去做? 问题答案: 如果要在所需表中保存公共字段,则意味着假设您拥有A类和B类,并且具有一些通用文件(例如created_by,updated_by),并且希望将field1,field2保存在两个实体中:IN数据库级: 对于这种类型的结构,您应该使用@Map

  • 我有一个类CustomerProfile,它映射到一个表CUST_PROFILE。我们需要在一个单独的表中维护关闭的概要文件,该表将具有相同的模式。我在SO中读过很多问题,特别是下面的问题(下面有一个总结了很多类似问题的答案) 每个实体Hibernate两个表 从中我可以理解,使用MappedSuperclass以外的注释很难获得相同的结果。但可以使用xml映射。 我之所以不愿使用Mappedsu

  • 我有一个使用iReport在jasper报告2.0.4中创建的报告。我有两个子报告。这两个子报告共享相同的jrxml。我在参数中传递jrxml作为子报告的报告表达式。我有这个参数的代码 一切都很好。问题出在两个子报表数据源上 这些子报表的数据源来自作为参数传递的同一个POJOs列表 以下是两个子报表的子报表jrxml代码 第一 第二 您看,这两个子报告具有相同的代码。 奇怪的是,两个子报告显示,但