【问题标题】:Hibernate Entities Mapping NullPointerExceptionHibernate 实体映射 NullPointerException
【发布时间】:2014-12-24 19:26:39
【问题描述】:

Hej 伙计们,这是我的问题。我有一段Java代码,但我不知道 NullPointerException 的原因是什么。我想这是由不正确的对象映射引起的 但我自己还没有找到解决办法。

ArrayList<Auction> auctionList = auctionDAO.findAll();  /* Works correctly */

for(Auction auction : auctionList) {
System.out.println(auction.getOwner().getEmail());  /* NullPointerException */
}

/* -------------- ENTITIES --------------- */

@Entity
@Table(name="USERS")
public class User implements Serializable {

    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private Integer id;

    (other properties)
    private String email;
    @OneToMany(cascade=CascadeType.ALL, fetch=FetchType.EAGER, mappedBy="owner")
    @JoinTable(
            name="OWNER_AUCTION",
            joinColumns = @JoinColumn(name="OWNER_ID"),
            inverseJoinColumns = @JoinColumn(name="AUCTION_ID")
    )
    private Set<Auction> ownedAuctionList = new HashSet<Auction>();

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    (getters & setters)
}

@Entity
@Table(name="AUCTIONS")
public class Auction implements Serializable {

    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private Integer id;

    (other properties)

    @ManyToOne(fetch=FetchType.EAGER)
    private User owner;

    (other properties & getters & setters)
}

【问题讨论】:

  • 你能分享你的表吗?
  • 如果拍卖不为空,那么auction.getOwner() 可能会返回空值。确保auction.getOwner() 不为空。

标签: java hibernate object jakarta-ee mapping


【解决方案1】:

没有你的桌子,很难说。但我想出于调试目的,您应该这样做:

for(Auction auction : auctionList) {
    if(auction.getOwner()==null){
        System.out.println("Null Owner");
    }
    else if(auction.getOwner().getEmail()==null){
        System.out.println("Null mail");
    }
    else
    System.out.println(auction.getOwner().getEmail());
}

这应该可以帮助您找到问题

【讨论】:

  • 谢谢回复。我发现了错误。由于我的疏忽,这是一个小错误。没什么特别的。
猜你喜欢
  • 1970-01-01
  • 2018-12-10
  • 2014-09-15
  • 1970-01-01
  • 2018-06-28
  • 1970-01-01
  • 2021-11-22
  • 2014-03-06
  • 2015-04-11
相关资源
最近更新 更多