我在GWT项目中使用JPA(使用Hibernate)和Gilead。在服务器端我有这个方法,我用相同的“广告系列”两次调用此方法。在第二次调用时,它会在第4行“campaign.getTextAds()”
中抛出空指针异常public List<WrapperTextAd> getTextAds(WrapperCampaign campaign) {
campaign = em.merge(campaign);
System.out.println("getting textads for "+campaign.getName());
for(WrapperTextAd textad: campaign.getTextAds()) {
//do nothing
}
return new ArrayList<WrapperTextAd>(campaign.getTextAds());
}
WrapperCampaign Entity中的代码如下所示
@OneToMany(mappedBy="campaign")
public Set<WrapperTextAd> getTextAds() {
return this.textads;
}
答案 0 :(得分:1)
由于第3行没有响击,因此广告系列不为空。如果要迭代的集合为null,则每个循环将抛出NPE(因为尝试使用null集合参数初始化新的ArrayList)。你应该防范这个:
if(campaign.getTextAds() != null) {
for(WrapperTextAd textad: campaign.getTextAds()) {
//do nothing
}
}