大家好,我在使用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,并且您尝试在其上调用方法。