大家好,我在使用JPA 2持久性与EclipseLink供应商进行一对一映射时遇到了一个小问题,也许你们中的任何一个都可以提供帮助。

我想将一个表与另一个表映射,但是第二个表中的字段是可选的。因此,我为第一个表创建了@Entity:

放大器类

private AmpApInfo ampApInfo;
private String apid;


    @Id
@GeneratedValue(strategy=GenerationType.AUTO)
public String getApid() {
    return this.apid;
}


public void setApid(String apid) {
    this.apid = apid;
}

    @OneToOne
@JoinColumn(name="apid")
public AmpApInfo getAmpApInfo() {

        return this.ampApInfo;

}

public void setAmpApInfo(AmpApInfo ampApInfo) {
    this.ampApInfo = ampApInfo;
}


和@Entity第二个表

AmpApInfo类

    private String apid;
private Amp amp;
    private String prodOrderNo;

public AmpApInfo() {
}



@OneToOne(optional=true, mappedBy="ampApInfo")
public Amp getAmp() {
    return this.amp;
}

public void setAmp(Amp amp) {
    this.amp = amp;
}

    @Id
public String getApid() {
    return apid;
}
public void setApid(String apid) {
    this.apid = apid;
}

        @Column(name="prod_order_no")
public String getProdOrderNo() {
    return this.prodOrderNo;
}

public void setProdOrderNo(String prodOrderNo) {
    this.prodOrderNo = prodOrderNo;
}


现在当我想找到prodOrderNo时

    public Amp selectProdInfo(String name) {
    // TODO Auto-generated method stub


    Amp amp = Transactions.getEntityManager().find(Amp.class, name.trim());

    System.out.println("order number" + amp.getAmpApInfo().getProdOrderNo());

    return amp;
}


我期待得到null cos不在那儿,但是我正在网上获取java.lang.NullPointerException

  System.out.println("order number" + amp.getAmpApInfo().getProdOrderNo());


任何人都可以帮忙???

最佳答案

amp为null或amp.getAmpApInfo()返回null,并且您尝试在其上调用方法。

07-25 22:57
查看更多