克隆Java实体对象以保存在2个表中相同的结构

时间:2017-05-03 08:01:50

标签: java spring jpa

我有User表和User_Hist表。它们是相同的结构:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form>
<input type="number" class="value1" id="value1" path="commandName.object.field1" />
</form>
<form>
<input type="number" class="value1" id="value1" path="commandName.object.field2" />
</form>

<input type="text" disabled="disabled" id="result" />

当我创建新用户时,数据将保存在两个表中,如果删除了User表上的一行,我们将通过User_Hist的数据备份更新此行。 目前,我使用JPA存储到db和BeanUtils.copyProperties来克隆数据。

User (User_ID, Name, Address)
User_Hist (User_ID, Name, Address)

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

2 个答案:

答案 0 :(得分:0)

我不知道有什么方法可以将相同的数据存储在两个表中,但不包括触发器,尽管您可以使用一个java对象将数据存储在不同的表中,这样就可以避免克隆或覆盖bean属性对不同的对象。

答案 1 :(得分:0)

您可以将EntityListener添加到您的用户实体 只需用

注释即可
class SelectInst
{
public:
  int x;
};

void *operator new(size_t Size, unsigned Us) {
                                ^^^^^^^^^^^ 3 is passed here
                   ^^^^^^^^^^^ allocation size requested

  return ... // Allocates enough space for Size and for Us uses
}

SelectInst *Create() {
  return new(3) SelectInst();
}

int main()
{
  auto ptr = Create();
  return 0;
}

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

the example。另请阅读this以访问EntityManager