在spring hibernate中将多行数据和一些其他数据同时保存到两个表中

时间:2016-08-29 12:15:36

标签: spring hibernate

我想同时将表单数据保存到两个表中。表单包含多个相同的行,其中包含一些字段,如

  

item,unit,unit_price,total。

1。)在table1中我想保存一些数据,如id(自动生成,主键),日期,创建者。

2。)在table2中我想保存id(自动生成的主键),fid(table1的id,外键),item,unit,unit price,total。请记住,在table2中,将从表单数据中保存多行。

我无法弄明白。请帮我一个有效的分步示例,请不要使用静态或预定义的数据,只从表单中获取数据。

1 个答案:

答案 0 :(得分:0)

您的表单是否是网页上的HTML表单,您是否正在编写Spring MVC应用程序?您是否设置了Spring Security或其他一些身份验证机制,以便了解用户是谁?如果是这样,这里有一种方法:

  • 使用字段id,unit,unit-price,total,creator,currentDate定义一个普通的旧Java对象(PO​​JO);也许你会把它命名为Item。
  • 定义另一个普通的旧Java对象,可能名为" ItemHistory",具有自己的ID和对项目的引用。
  • 在第一个POJO(" Item")中包含对ItemHistorys列表的引用。
  • 使用Hibernate / JPA注释注释这两个类,这样Item与ItemHistory有一个OneToMany关系。
  • 使用注释为POST方法的方法定义Spring MVC控制器,将Item作为一个参数,将Authentication作为另一个参数(假设您已配置Spring Security,将自动使用当前身份填充身份验证-logged-in user。在此方法中,将Item的currentDate和author设置为当前日期,并将Authentication参数设置为principal。如果是新项目(还没有id),则将第一个ItemHistory添加为副本项目本身。如果是现有项目,请根据需要添加另一个ItemHistory。
  • 使用注释为transactional的方法定义一个Spring bean,可能名为ItemService,它接受一个I​​tem并保存它。从REST控制器调用此bean。这种Spring bean称为DAO(数据访问对象)。

还有其他策略,但是如果您已经根据需要配置了Spring MVC,Spring Security和Hibernate / JPA,那么这个策略非常简单。