@OneToMany свойство null в сущности после (второго) слияния - PullRequest
1 голос
/ 31 марта 2010

Я использую JPA (с Hibernate) и Gilead в проекте GWT. На стороне сервера у меня есть этот метод, и я вызываю этот метод дважды с одной и той же «кампанией». При втором вызове он выдает исключение нулевого указателя в строке 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 Ответ

1 голос
/ 31 марта 2010

Поскольку строка 3 не дует, кампания не является нулевой. Цикл for для каждого выдает NPE, если коллекция, для которой выполняется итерация, имеет значение null (как и при попытке инициализации нового ArrayList с параметром коллекции null) Вы должны остерегаться этого:

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