2014-12-24 158 views
0

Hej Guys,这是我的问题。我有一段Java代码,我不知道 NullPointerException的原因是什么。我认为这是由不正确的对象映射 引起的,但我还没有找到解决方案。Hibernate实体映射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) 
} 
+0

你可以分享你的表? – erencan

+0

如果拍卖不为空,拍卖.getOwner()可能会返回空值。确保auction.getOwner()不为null。 –

回答

0

没有你的表格,这很难说。但我想为调试目的,你应该做这样的事情:

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()); 
} 

这应该可以帮助你找到你的问题

+0

谢谢回复。我发现了错误。这是一个小错误,因为我的oversigt。没什么特别的。 – RoeJi