Java 如何在单个POJO中表示Hibernate对象的集合?
考虑以下Hibernate映射:Java 如何在单个POJO中表示Hibernate对象的集合?,java,hibernate,dao,hibernate-mapping,Java,Hibernate,Dao,Hibernate Mapping,考虑以下Hibernate映射: <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">
<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对象遵从DAO。是否有一种更干净的方法仍然允许客户对象存在于每个行程表和酒店对象中?一旦删除客户表,客户对象将不再由Hibernate管理。如果您仍然希望拥有一个包含行程和酒店的customer对象,那么这需要通过编程实现。我不确定你是否真的在找这个 一种可能的方法是 假设您有一个带有getCustomer方法的DAO。这接受客户id。 此方法再触发两个查询,以根据客户id获取行程和酒店列表。 它创建一个Customer对象,并在其中设置行程和酒店列表,然后返回它和填充的Customer对象。
为什么要删除CUSTOMER表?这确实是假设,但假设CUSTOMER表正在移动到其他无法访问的模式。谢谢,Santosh。是的,这与我现在拥有的差不多:1。有人打电话给getCustomercustomerId。返回一个新的customer对象,其中包含customerId成员变量。2.有人打电话给customer.getitineries。customer对象只是根据inventuredao来检索当前客户的行程。理想的情况是多个hibernate映射,将行程和酒店映射到客户对象,但我不确定hibernate是否可以这样工作。。。