1

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

1 回答 1

1

由于第 3 行没有爆炸,因此活动不为空。如果要迭代的集合为空,则 for each 循环将抛出 NPE(尝试使用空集合参数初始化新的 ArrayList)。你应该注意这一点:

if(campaign.getTextAds() != null) {
    for(WrapperTextAd textad: campaign.getTextAds()) {
        //do nothing
    }
}
于 2010-03-31T11:29:00.890 回答