我想将一个表的记录复制到同一个表中(除了用以前的记录值保存新记录,这里主键会自动递增)所以如何在hibernate中执行它(有没有像这样的直接方法session.save(Obj))我正在使用Hibernate 4.1.12。
答案 0 :(得分:0)
您可以尝试将所有主键列设为null,然后尝试将Session.Save(obj)。
答案 1 :(得分:0)
让我们考虑一下:
您可以使用以下方法实现您的目标:
Test test = (Test) sessionFactory.getCurrentSession().createCriteria(Test.class).add(Restrictions.eq("id", id)).uniqueResult();
test.setId(null);
sessionFactory.getCurrentSession().saveOrUpdate(test);
答案 2 :(得分:0)
试试这个
Test test = (Test) sessionFactory.getCurrentSession().createCriteria(Test.class).add(Restrictions.eq("id", id)).uniqueResult();
Test t=new Test();
t.setName(test.getName());
t.setAge(test.getAge());
sessionFactory.getCurrentSession().save(t);
或者 如果您的表已创建日期或修改日期字段,则更改该两个值并保存。
Test test = (Test) sessionFactory.getCurrentSession().createCriteria(Test.class).add(Restrictions.eq("id", id)).uniqueResult();
test.setCreatedDate(new Date());
sessionFactory.getCurrentSession().save(test);
答案 3 :(得分:0)
您可以在保存新对象之前尝试逐出前一个对象。
Test test = (Test) sessionFactory.getCurrentSession().createCriteria(Test.class).add(Restrictions.eq("id", id)).uniqueResult();
sessionFactory.getCurrentSession().evict(test);
test.setId(1);
sessionFactory.getCurrentSession().save(test);