0
大家好我有一个小问题,使用JPA 2持久性与EclipseLink供应商进行一对一映射,也许你们中的任何人都可以提供帮助。NullPointerException @一对一映射
我想映射一个表与另一个表,但第二个表中的字段是可选的。所以我创建@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;
}
现在,当我想find prodOrderNo like
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;
}
我期待得到空COS它不存在,但我上线
System.out.println("order number" + amp.getAmpApInfo().getProdOrderNo());
任何一个可以帮助越来越显示java.lang.NullPointerException ???
我知道amp.getAmpApInfo()是null,但是持久性应该用null值填充AmpApInfo? – user1048282 2012-01-11 17:01:51
您是否插入了AmpApInfo条目?这是一个可选的映射,所以如果数据库中没有相应的条目,您应该期望Amp具有空引用。 – Theblacknight 2012-01-12 09:52:14
非常感谢:] – user1048282 2012-01-24 11:25:49