-2

我有一个代码,它从数据库中获取日期,我从中获取年份如下代码:

 Date expiryDate=dataMgr.getDate(); 
 int validity=2;    
 expiryDate.setYear(expiryDate.getYear() + validity); 
 // some piece of code
 tx.commit();

我正在使用休眠从数据库中获取。一切正常,但问题是在提交之后......我从中获取日期的数据库年份(dataMgr.getDate())也发生了变化,我不知道为什么?有人可以清除我吗???

例如,形成上面的代码expiryDate:4/21/2012(来自数据库)。提交后它被更改为4/21/2014不应该发生的数据库?我没有在任何地方使用过相应的对象或在任何地方更新???

帮帮我

4

1 回答 1

1

对象位于Persistent state单个transaction. 此外,两者expiryDatedateMgr.getDate都指的是同一个对象。

获取对象的克隆而不是获取引用

Date expiryDate=dataMgr.getDate().clone();

我不确定语法,请检查。

于 2012-04-12T05:28:16.773 回答