0

使用休眠实体。DB中有实体AddressRoom适当的表。
Address可以有多个Rooms。

两个表都有address_Id并且customerEmailAddress
这些列FKRoom表中,即对Address表的引用。

DB中已经有Address记录。
需要将几个房间添加到this地址。

Address如何使用和之间的注释组织 Hibernate 关系Room,以便使用来自 Address:和Room的适当属性更新表
address_IdcustomerEmailAddress

Java 部分如下所示:

    Room room = new Room();
    Address addr  = someService.getAddressFromSession();
    room.add(addr);
    entityManager.persist(room);
    Room room2 = new Room();
    room2.add(addr);
    entityManager.persist(room2);

DB 结果(房间表)应如下所示:
id || 地址ID || 客户
电子邮件地址 1 || 3 || mail3@a.com
2 || 3 || mail3@a.com

4

1 回答 1

1

您还没有提到两个表的主键。假设两个表都有自己的主键,我认为您可以使用组件模型在对象Address和对象之间完成标准映射,如下所示:Room

  1. 地图address_idcustomerEmailAddress作为一个组件。请参阅此处的组件映射文档 - Hibernate Component Mapping

  2. rooms使用上面定义的组件添加AddressOne-To-Many关系并设置cascadeAll.

  3. 使用上面定义的组件添加addressRoomMany-To-One

  4. 如下定义一种addRoom方法Address(概念上):

      public void addRoom(Room room){
           if(this.rooms == null){
               this.rooms = new ArrayList<Room>();
           }
           room.setAddress(this);
           this.rooms.add(room);
      } 
    
  5. 现在你可以简单地工作了Address。要保存room,添加roomaddress并保存地址。

希望这可以帮助!

于 2012-10-14T04:39:45.580 回答