Junit和Hibernate的意外行为

时间:2014-03-07 16:16:29

标签: java spring hibernate orm junit

我无法理解为什么在我的单元测试中使用Junit在setup方法中我必须添加sessionFactory.getCurrentSession()。flush(); sessionFactory.getCurrentSession()清除()。否则Hibernate会有一些意想不到的行为。

@Before
public void setUp() throws ParseException
{

... saving data in the db
sessionFactory.getCurrentSession().flush();
sessionFactory.getCurrentSession().clear();

}

@Test
@Transactional
public void getData() throws ParseException
{

    Set<Data> offers = productDao.getData(1);
}

在我的getData()方法中,我从数据库中检索一个对象

@Override
public Set<Data> getData(int id)
{

Offer offer = product.getOffer();
        if (offer != null)
        {
    Set<Product> productsOffers = offer.getProducts();
            for (Product productsOffer : productsOffers)
            {
                Set<ProductLicense> productLicences = productsOffer.getProductLicenses(); (**)
                for (ProductLicense productLicence : productLicences)
                {

    ...
   } 

我无法理解为什么在(**)集合productLicenses被加载如果在setUp中我添加了sessionFactory.getCurrentSession()。flush(); sessionFactory.getCurrentSession()清除()。 ,如果我在setup方法中省略这两行,我会在(**)之后的行中得到一个空指针异常。

0 个答案:

没有答案