Hibernate - 1个2级表

时间:2018-04-09 12:43:54

标签: java hibernate

我有一个简单的表,我想将它们存储在另一个表中(也创建一个历史悠久的用户)。我们称之为用户。我创建了一个与用户(只有不同​​的id名称)完全相同的表,名为HISTORY_Users。

所以我创建了表,现在我意识到我有1个对象的2个表。那么如何将我的对象仅添加到hist表呢?

我不想同时添加它们。我只想在删除帐户时将用户添加到hist。

我正在使用Hibernate和xml映射

 //when the user deletes the account I call this function and pass the User
  private static void addToHist(User User) {
      //how do I add only to HIST_Users table??
      Database.addToDatabase(user);

}


 //Save the object to the database
public static void addToDatabase(Object object) {
    SessionFactory factory = HibernateUtil.GetSessionFactory();
    Session session = factory.openSession();
    Transaction tx = null;
    try{
        tx = session.beginTransaction();
        session.save(object);
        tx.commit();
    }catch (HibernateException e) {
        if (tx!=null) tx.rollback();
        e.printStackTrace();
    }finally {
        session.close();
    }
}

1 个答案:

答案 0 :(得分:0)

也许更好的解决方案是使用Hibernate Envers:http://hibernate.org/orm/envers/

您可以配置何时将其放入历史记录:创建,更新或删除。

表是自动创建的,您需要添加一些注释,例如@Audited等。