首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在单个POJO中表示Hibernate对象的集合?

如何在单个POJO中表示Hibernate对象的集合?
EN

Stack Overflow用户
提问于 2011-11-02 15:57:47
回答 1查看 198关注 0票数 0

考虑以下Hibernate映射:

代码语言:javascript
复制
<hibernate-mapping package="org.example">
  <class name="Customer" table="CUSTOMER">
    <id name="customerId" column="customer_id"/>

    <bag name="itineraries" table="ITINERARY" inverse="true" cascade="all">
      <key column="customer_id"/>
      <one-to-many class="Itinerary"/>
    </bag>

    <bag name="hotels" table="HOTEL" inverse="true" cascade="all">
      <key column="customer_id"/>
      <one-to-many class="Hotel"/>
    </bag>
  </class>
</hibernate-mapping>

<hibernate-mapping package="org.example">
    <class name="Itinerary" table="ITINERARY">
      <many-to-one name="customer" column="customer_id" update="false" not-null="true"/>
      ...other properties...
    </class>
</hibernate-mapping>

<hibernate-mapping package="org.example">
    <class name="Hotel" table="HOTEL">
      <many-to-one name="customer" column="customer_id" update="false" not-null="true"/>
      ...other properties...
    </class>
</hibernate-mapping>

现在假设您需要删除CUSTOMER表。您将如何重构映射/模型,以使Customer Java对象继续包含基于customerId的行程和酒店对象的列表?上述酒店和行程对象仍然需要由Hibernate管理。

我能想到的最好的方法是,当调用者请求列表时,Customer对象将延迟到DAOs。是否有一种更干净的方法仍然允许客户对象存在于每个行程和酒店对象中?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-02 17:04:12

一旦删除了customer表,customer对象将不再由Hibernate管理。如果您仍然希望拥有一个包含旅行者和酒店的customer对象,则需要以编程方式完成。我不确定你是不是真的在找这个。

一种可能的方法是

  1. 假设您有一个带有getCustomer()方法的DAO。此方法接受客户id。
  2. 此方法再执行两次查询,以根据客户id获取行程和酒店列表。
  3. 它创建一个customer对象,并在其中设置行程和酒店列表,然后返回该对象和填充的customer对象。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7977238

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档