我无法理解为什么在我的单元测试中使用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方法中省略这两行,我会在(**)之后的行中得到一个空指针异常。