在hibernate 中如何更新主键!!!!!!!!!!!!!

Session s = DBhibernate.getSession();
Mer m = new Mer();
MerForm mer = m.find(s , ((MerForm)aForm).getKey()//旧主健值);

mer.setName(((MerForm)aForm).getName()//新主健值);
m.update(s , mer);


public void update(Session s , MerForm f)
{
s.saveOrUpdate(f);
s.flush();
s.connection().commit();
}

以上会出项异常
net.sf.hibernate.HibernateException: identifier of an instance of test.MerForm altered from 878 to 87ff
非主健则成功更新
在 .bhm.xml文件中 <generator class="assigned"/>

另外从ThreadLocal中获得的session该在什么时候关闭
重新部署的时候有时会出现
net.sf.hibernate.impl.SessionImpl finalize
警告: unclosed connection

请大家多多指教
谢谢!!!!!!

Session s = DBhibernate.getSession();
Mer m = new Mer();
MerForm mer = m.find(s , ((MerForm)aForm).getKey()//旧主健值);

mer.setName(((MerForm)aForm).getName()//新主健值);
m.update(s , mer);


public void update(Session s , MerForm f)
{
s.saveOrUpdate(f);
s.flush();
s.connection().commit();
}

以上会出项异常
net.sf.hibernate.HibernateException: identifier of an instance of test.MerForm altered from 878 to 87ff
非主健则成功更新
在 .bhm.xml文件中<generator class="assigned"/>

另外从ThreadLocal中获得的session该在什么时候关闭
重新部署的时候有时会出现
net.sf.hibernate.impl.SessionImpl finalize
警告: unclosed connection

请大家多多指教
谢谢!!!!!!

以上会出项异常
net.sf.hibernate.HibernateException: identifier of an instance of test.MerForm altered from 878 to 87ff
非主健则成功更新
在 .bhm.xml文件中(generator class="assigned")

主键能更新吗?复制一个,删除原来的?有什么意义
session可以在filter中关闭

在数据库设计中主键应不和商业逻辑有关系的。就是表示唯一的tuple而已

建议:

新做一个没有商业逻辑的主键代替以前Primary Key