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