Привет всем. У меня небольшая проблема при сопоставлении один-к-одному с использованием постоянства JPA 2 с поставщиком EclipseLink, и, возможно, любой из вас сможет помочь.
Я хочу сопоставить одну таблицу с другойно поле во второй таблице не является обязательным.Итак, я создал @Entity для первой таблицы:
Класс Amp
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;
}
Я ожидаю получить нулевое значение, потому что его там нет, но я получаю исключение java.lang.NullPointerException в строке
System.out.println("order number" + amp.getAmpApInfo().getProdOrderNo());
Любой может помочь ???