(第二次)合并后@OneToMany属性为null

时间:2010-03-31 11:20:21

标签: hibernate gwt jpa gilead

我在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;
}

1 个答案:

答案 0 :(得分:1)

由于第3行没有响击,因此广告系列不为空。如果要迭代的集合为null,则每个循环将抛出NPE(因为尝试使用null集合参数初始化新的ArrayList)。你应该防范这个:

if(campaign.getTextAds() != null) {
    for(WrapperTextAd textad: campaign.getTextAds()) {
        //do nothing
    }
}