我有一个简单的表,我也想将它们存储在另一个表中(创建一个历史性的用户)。让我们称它为用户。我创建了一个与用户完全相同的表(只有不同的id名),名为HISTORY_Users。
所以我创建了这个表,现在我意识到我为一个对象创建了两个表。那么,如何只将对象添加到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();
}
}发布于 2018-04-09 12:52:34
也许更好的解决方案是使用Hibernate Envers:http://hibernate.org/orm/envers/
您可以在要将其放入历史记录中时进行配置:在创建、更新或删除时。
表是自动创建的,您只需要添加一些注释,比如@Audited等等。
https://stackoverflow.com/questions/49733284
复制相似问题