小编Özm*_*lli的帖子

对象在不调用 save() 方法的情况下被持久化

首先,我从数据库获取一个持久对象(实例 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)

java spring hibernate

1
推荐指数
1
解决办法
2689
查看次数

标签 统计

hibernate ×1

java ×1

spring ×1