首先,我从数据库获取一个持久对象(实例 A),然后将值设置为一个字段。我再次从数据库调用持久对象(实例B)。出乎意料的是,加载的对象(实例 B)具有我设置给实例 A 的值。即使我没有调用任何 save() 方法。
这种意外行为背后的原因是什么?我该如何解决?
这是测试失败的情况:
@RunWith( SpringJUnit4ClassRunner.class )
@ContextConfiguration( locations = { "/webapp-beans.xml" } )
@Transactional
public class HibernatePersistentTest extends TestCase
{
@Autowired
CompanyDAO companyDAO;
@Test
public void persisting_setAValueAndOnlyCallGet_fieldValueDoesNotChange()
{
// GIVEN
// persist new Company
Company company = new Company();
company.setIsDeleted( YesNoType.NO );
company.setName( "A" );
companyDAO.getHibernateTemplate().saveOrUpdate( company );
// assert "object persisted properly"
Company companyA = (Company) companyDAO.getHibernateTemplate().get( Company.class, company.getId() );
assertEquals( "Field value changed", …Run Code Online (Sandbox Code Playgroud)