0
在我的春天應用我有兩個實體:
NullPointerException異常時要訪問JUnit測試延遲加載的集合
@Entity
public class Category {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
....
@OneToOne
@Cascade({CascadeType.ALL})
@JoinColumn(name="page_id")
private Page page;
@OneToMany(fetch=FetchType.LAZY, mappedBy="category")
private List<Shop> shop;
..getters and setters
}
而且
@Entity
public class Shop {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
....
@OneToOne(mappedBy="shop")
private Settings settings;
@ManyToOne
@Cascade({CascadeType.SAVE_UPDATE})
@JoinColumn(name = "category_id")
private Category category;
@OneToOne
@Cascade({CascadeType.ALL})
@JoinColumn(name = "page_id")
private Page page;
...getters and setters
}
在我測試的JUnit我添加一些類別和一些商店這個類別,當我想訪問商店列表當前類別我有一個錯誤 java.lang.NullPointerException ....
我的測試:
@ContextConfiguration(locations = {
"classpath:security-context.xml",
"classpath:dao-context.xml"
})
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@TransactionConfiguration(transactionManager="transactionManager", defaultRollback=false)
@Transactional
public class CategoryTest {
Shop shop1 = new Shop(....);
Shop shop1 = new Shop(....);
Category category1 = new Category(....);
Category category2 = new Category(....);
@Test
public void someTest(){
shop1.setCategory(category1);
shop2.setCategory(category2);
shopService.add(shop1);
shopService.add(shop2);
assertEquals(2, shopService.getAllShop().size());
assertEquals(2, categoryService.getAllShop().size());
//IN THIS LINE I HAVE A ERROR
assertEquals(1, categoryService.getCategory(category1.getId()).getShop().size());
}
}
要訪問懶屬性附加傷害我加入到我的web.xml FILTR:org.springframework.orm.hibernate3.support.OpenSessionInViewFilter這不是在JUnit測試在前面的應用程序工作正常。
哪一點我犯了一個錯誤?
我知道,所以我說org.springframework.orm.hibernate3.support.OpenSessionInViewFilter我的web.xml並添加@Transactional註解到我的測試類。但是這沒有幫助。我錯了嗎? – kuka11