克隆一个Java实体对象,将其保存在两个表中

克隆一个Java实体对象,将其保存在两个表中,java,spring,jpa,Java,Spring,Jpa,我有用户表和用户历史表。它们的结构相同: User (User_ID, Name, Address) User_Hist (User_ID, Name, Address) 当我创建新用户时,数据将保存在两个表中,如果用户表上的一行被删除,我们将通过用户历史的数据备份来更新这一行。 目前,我正在使用JPA将数据存储到db和BeanUtils.copyProperties中以克隆数据 BeanUtils.copyProperties(user, UserHist); saveAndFlush(Us

我有用户表和用户历史表。它们的结构相同:

User (User_ID, Name, Address)
User_Hist (User_ID, Name, Address)
当我创建新用户时,数据将保存在两个表中,如果用户表上的一行被删除,我们将通过用户历史的数据备份来更新这一行。 目前,我正在使用JPA将数据存储到db和BeanUtils.copyProperties中以克隆数据

BeanUtils.copyProperties(user, UserHist);
saveAndFlush(User);
saveAndFlush(UserHist);

在Spring上,我们有没有办法帮助在多表上存储db?(在db上不使用触发器)

我不认为有任何方法可以在运行中的两个表中存储相同的数据,但可以使用一个java对象将数据存储在不同的表中,这样可以避免将bean属性克隆或复制到不同的对象

您可以向用户实体添加EntityListener 只需用

@EntityListeners(UserListener.class)
并在
@PostPersist
方法中添加UserHist保存


看。另请阅读以访问EntityManager

您可以使用Hibernate Envers。或者,你在Spring上对copyProperties的尝试也很好。这很清楚,我更喜欢在哪里创建触发器来自动创建/更新此行的历史记录。根本不需要从后端进行管理。我不知道你为什么不使用这些。