使用相关表中的 FK 列值更新表



使用了休眠实体。数据库中有AddressRoom实体和专有表。
Address可以有多个Room

两个表都有address_IdcustomerEmailAddress
这些列FK Room表中,引用Address表。

数据库中已经有Address记录。
需要将多个聊天室添加到this地址。

如何使用AddressRoom之间的注释组织休眠关系,以便使用地址中的适当属性更新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||客户电子邮件地址
1 ||              3 ||
mail3@a.com2 ||              3 ||mail3@a.com

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

  1. address_idcustomerEmailAddress映射为一个组件。请参阅此处的组件映射文档 - 休眠组件映射

  2. 使用上面定义的组件在AddressOne-To-Many关系中添加rooms,并将cascade设置为 All

  3. 使用上面定义的组件Many-To-One Room中添加address

  4. Address中定义一个addRoom方法,如下所示(概念上):

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

希望这有帮助!

相关内容

  • 没有找到相关文章

最新更新