我正在尝试在Eclipse LUNA
中创建Odata服务。
我遵循了基于向导的方法。
我使用了两个表。
我在eclipse中从表中创建了JPA
个实体,因此下面的类是从向导创建的。
ZAEProdorder.java
package model;
import java.io.Serializable;
import javax.persistence.*;
import java.math.BigDecimal;
import java.util.Set;
/**
* The persistent class for the ZAE_PRODORDER database table.
*
*/
@Entity
@Table(name="ZAE_PRODORDER")
@NamedQuery(name="ZaeProdorder.findAll", query="SELECT z FROM ZaeProdorder z")
public class ZaeProdorder implements Serializable {
private static final long serialVersionUID = 1L;
@EmbeddedId
private ZaeProdorderPK id;
@Column(length=50)
private String barcode;
@Column(length=10)
private String batch;
@Column(length=40)
private String bfdat;
@Column(length=12)
private String cardate;
@Column(length=4)
private String ccook;
@Column(length=60)
private String compad;
@Column(length=18)
private String ean11;
@Column(length=10)
private String eddat;
@Column(length=60)
private String fifth;
@Column(length=60)
private String firstl;
@Column(length=20)
private String fld1;
@Column(length=40)
private String fld10;
@Column(length=60)
private String fld11;
@Column(length=60)
private String fld12;
@Column(length=60)
private String fld13;
@Column(length=20)
private String fld2;
@Column(length=20)
private String fld3;
@Column(length=20)
private String fld4;
@Column(length=20)
private String fld5;
@Column(length=20)
private String fld6;
@Column(length=20)
private String fld7;
@Column(length=20)
private String fld8;
@Column(length=30)
private String fld9;
@Column(length=60)
private String fourth;
@Column(length=12)
private String hsdate;
@Column(length=4)
private String jldat;
@Column(length=5)
private String jobno;
@Column(length=6)
private String lblno;
@Column(length=9)
private String line;
@Column(length=10)
private String lotno;
@Column(length=40)
private String maktx;
@Column(length=5)
private String manuf;
@Column(length=5)
private String matnr;
@Column(length=1)
private String ptype;
@Column(length=60)
private String qlify;
@Column(length=45)
private String rfgnf;
@Column(length=60)
private String secondl;
@Column(length=12)
private String serno;
@Column(length=1)
private String shift;
@Column(length=60)
private String sixth;
@Column(length=10)
private String slabd;
@Column(length=10)
private String tarag;
@Column(length=4)
private String teco;
@Column(length=60)
private String third;
@Column(length=40)
private String tihigh;
@Column(length=60)
private String title;
@Column(precision=63)
private double tolerance;
@Column(length=20)
private String weight;
@Column(length=5)
private String weight1;
@Column(length=8)
private String wgtkg;
//bi-directional many-to-one association to ZaeGoodsrecpt
@OneToMany(mappedBy="zaeProdorder")
private Set<ZaeGoodsrecpt> zaeGoodsrecpts;
public ZaeProdorder() {
}
public ZaeProdorderPK getId() {
return this.id;
}
public void setId(ZaeProdorderPK id) {
this.id = id;
}
public String getBarcode() {
return this.barcode;
}
public void setBarcode(String barcode) {
this.barcode = barcode;
}
public String getBatch() {
return this.batch;
}
public void setBatch(String batch) {
this.batch = batch;
}
public String getBfdat() {
return this.bfdat;
}
public void setBfdat(String bfdat) {
this.bfdat = bfdat;
}
public String getCardate() {
return this.cardate;
}
public void setCardate(String cardate) {
this.cardate = cardate;
}
public String getCcook() {
return this.ccook;
}
public void setCcook(String ccook) {
this.ccook = ccook;
}
public String getCompad() {
return this.compad;
}
public void setCompad(String compad) {
this.compad = compad;
}
public String getEan11() {
return this.ean11;
}
public void setEan11(String ean11) {
this.ean11 = ean11;
}
public String getEddat() {
return this.eddat;
}
public void setEddat(String eddat) {
this.eddat = eddat;
}
public String getFifth() {
return this.fifth;
}
public void setFifth(String fifth) {
this.fifth = fifth;
}
public String getFirstl() {
return this.firstl;
}
public void setFirstl(String firstl) {
this.firstl = firstl;
}
public String getFld1() {
return this.fld1;
}
public void setFld1(String fld1) {
this.fld1 = fld1;
}
public String getFld10() {
return this.fld10;
}
public void setFld10(String fld10) {
this.fld10 = fld10;
}
public String getFld11() {
return this.fld11;
}
public void setFld11(String fld11) {
this.fld11 = fld11;
}
public String getFld12() {
return this.fld12;
}
public void setFld12(String fld12) {
this.fld12 = fld12;
}
public String getFld13() {
return this.fld13;
}
public void setFld13(String fld13) {
this.fld13 = fld13;
}
public String getFld2() {
return this.fld2;
}
public void setFld2(String fld2) {
this.fld2 = fld2;
}
public String getFld3() {
return this.fld3;
}
public void setFld3(String fld3) {
this.fld3 = fld3;
}
public String getFld4() {
return this.fld4;
}
public void setFld4(String fld4) {
this.fld4 = fld4;
}
public String getFld5() {
return this.fld5;
}
public void setFld5(String fld5) {
this.fld5 = fld5;
}
public String getFld6() {
return this.fld6;
}
public void setFld6(String fld6) {
this.fld6 = fld6;
}
public String getFld7() {
return this.fld7;
}
public void setFld7(String fld7) {
this.fld7 = fld7;
}
public String getFld8() {
return this.fld8;
}
public void setFld8(String fld8) {
this.fld8 = fld8;
}
public String getFld9() {
return this.fld9;
}
public void setFld9(String fld9) {
this.fld9 = fld9;
}
public String getFourth() {
return this.fourth;
}
public void setFourth(String fourth) {
this.fourth = fourth;
}
public String getHsdate() {
return this.hsdate;
}
public void setHsdate(String hsdate) {
this.hsdate = hsdate;
}
public String getJldat() {
return this.jldat;
}
public void setJldat(String jldat) {
this.jldat = jldat;
}
public String getJobno() {
return this.jobno;
}
public void setJobno(String jobno) {
this.jobno = jobno;
}
public String getLblno() {
return this.lblno;
}
public void setLblno(String lblno) {
this.lblno = lblno;
}
public String getLine() {
return this.line;
}
public void setLine(String line) {
this.line = line;
}
public String getLotno() {
return this.lotno;
}
public void setLotno(String lotno) {
this.lotno = lotno;
}
public String getMaktx() {
return this.maktx;
}
public void setMaktx(String maktx) {
this.maktx = maktx;
}
public String getManuf() {
return this.manuf;
}
public void setManuf(String manuf) {
this.manuf = manuf;
}
public String getMatnr() {
return this.matnr;
}
public void setMatnr(String matnr) {
this.matnr = matnr;
}
public String getPtype() {
return this.ptype;
}
public void setPtype(String ptype) {
this.ptype = ptype;
}
public String getQlify() {
return this.qlify;
}
public void setQlify(String qlify) {
this.qlify = qlify;
}
public String getRfgnf() {
return this.rfgnf;
}
public void setRfgnf(String rfgnf) {
this.rfgnf = rfgnf;
}
public String getSecondl() {
return this.secondl;
}
public void setSecondl(String secondl) {
this.secondl = secondl;
}
public String getSerno() {
return this.serno;
}
public void setSerno(String serno) {
this.serno = serno;
}
public String getShift() {
return this.shift;
}
public void setShift(String shift) {
this.shift = shift;
}
public String getSixth() {
return this.sixth;
}
public void setSixth(String sixth) {
this.sixth = sixth;
}
public String getSlabd() {
return this.slabd;
}
public void setSlabd(String slabd) {
this.slabd = slabd;
}
public String getTarag() {
return this.tarag;
}
public void setTarag(String tarag) {
this.tarag = tarag;
}
public String getTeco() {
return this.teco;
}
public void setTeco(String teco) {
this.teco = teco;
}
public String getThird() {
return this.third;
}
public void setThird(String third) {
this.third = third;
}
public String getTihigh() {
return this.tihigh;
}
public void setTihigh(String tihigh) {
this.tihigh = tihigh;
}
public String getTitle() {
return this.title;
}
public void setTitle(String title) {
this.title = title;
}
public double getTolerance() {
return this.tolerance;
}
public void setTolerance(double tolerance) {
this.tolerance = tolerance;
}
public String getWeight() {
return this.weight;
}
public void setWeight(String weight) {
this.weight = weight;
}
public String getWeight1() {
return this.weight1;
}
public void setWeight1(String weight1) {
this.weight1 = weight1;
}
public String getWgtkg() {
return this.wgtkg;
}
public void setWgtkg(String wgtkg) {
this.wgtkg = wgtkg;
}
public Set<ZaeGoodsrecpt> getZaeGoodsrecpts() {
return this.zaeGoodsrecpts;
}
public void setZaeGoodsrecpts(Set<ZaeGoodsrecpt> zaeGoodsrecpts) {
this.zaeGoodsrecpts = zaeGoodsrecpts;
}
public ZaeGoodsrecpt addZaeGoodsrecpt(ZaeGoodsrecpt zaeGoodsrecpt) {
getZaeGoodsrecpts().add(zaeGoodsrecpt);
zaeGoodsrecpt.setZaeProdorder(this);
return zaeGoodsrecpt;
}
public ZaeGoodsrecpt removeZaeGoodsrecpt(ZaeGoodsrecpt zaeGoodsrecpt) {
getZaeGoodsrecpts().remove(zaeGoodsrecpt);
zaeGoodsrecpt.setZaeProdorder(null);
return zaeGoodsrecpt;
}
}
ZAEgoodsrecpt.java
package model;
import java.io.Serializable;
import javax.persistence.*;
import java.math.BigDecimal;
import java.util.Date;
import java.sql.Timestamp;
/**
* The persistent class for the ZAE_GOODSRECPT database table.
*
*/
@Entity
@Table(name="ZAE_GOODSRECPT")
@NamedQuery(name="ZaeGoodsrecpt.findAll", query="SELECT z FROM ZaeGoodsrecpt z")
public class ZaeGoodsrecpt implements Serializable {
private static final long serialVersionUID = 1L;
@EmbeddedId
private ZaeGoodsrecptPK id;
@Column(length=70)
private String barcode;
@Column(length=40)
private String bfdat;
@Column(length=20)
private String charg;
@Column(length=10)
private String cookcode;
@Column(length=3)
private String cwmvemeh;
@Column(length=25)
private String cwmvemng;
@Column(length=10)
private String hsdat;
@Column(length=1)
private String indc;
@Column(length=5)
private String manuf;
@Column(length=18)
private String matnr;
@Column(length=10)
private String mblnr;
@Column(length=4)
private String mjahr;
@Column(length=20)
private String printdate;
@Temporal(TemporalType.DATE)
private Date proddate;
@Column(precision=10)
private BigDecimal seq;
@Column(nullable=false, length=1)
private String status;
@Column(length=3)
private String vemeh;
@Column(length=17)
private String vemng;
//bi-directional many-to-one association to ZaeProdorder
@ManyToOne
@JoinColumns({
@JoinColumn(name="AUFNR", referencedColumnName="AUFNR", nullable=false, insertable=false, updatable=false),
@JoinColumn(name="werks", referencedColumnName="werks", nullable=false, insertable=false, updatable=false)
})
private ZaeProdorder zaeProdorder;
public ZaeGoodsrecpt() {
}
public ZaeGoodsrecptPK getId() {
return this.id;
}
public void setId(ZaeGoodsrecptPK id) {
this.id = id;
}
public String getBarcode() {
return this.barcode;
}
public void setBarcode(String barcode) {
this.barcode = barcode;
}
public String getBfdat() {
return this.bfdat;
}
public void setBfdat(String bfdat) {
this.bfdat = bfdat;
}
public String getCharg() {
return this.charg;
}
public void setCharg(String charg) {
this.charg = charg;
}
public String getCookcode() {
return this.cookcode;
}
public void setCookcode(String cookcode) {
this.cookcode = cookcode;
}
public String getCwmvemeh() {
return this.cwmvemeh;
}
public void setCwmvemeh(String cwmvemeh) {
this.cwmvemeh = cwmvemeh;
}
public String getCwmvemng() {
return this.cwmvemng;
}
public void setCwmvemng(String cwmvemng) {
this.cwmvemng = cwmvemng;
}
public String getHsdat() {
return this.hsdat;
}
public void setHsdat(String hsdat) {
this.hsdat = hsdat;
}
public String getIndc() {
return this.indc;
}
public void setIndc(String indc) {
this.indc = indc;
}
public String getManuf() {
return this.manuf;
}
public void setManuf(String manuf) {
this.manuf = manuf;
}
public String getMatnr() {
return this.matnr;
}
public void setMatnr(String matnr) {
this.matnr = matnr;
}
public String getMblnr() {
return this.mblnr;
}
public void setMblnr(String mblnr) {
this.mblnr = mblnr;
}
public String getMjahr() {
return this.mjahr;
}
public void setMjahr(String mjahr) {
this.mjahr = mjahr;
}
public String getPrintdate() {
return this.printdate;
}
public void setPrintdate(String printdate) {
this.printdate = printdate;
}
public Date getProddate() {
return this.proddate;
}
public void setProddate(Date proddate) {
this.proddate = proddate;
}
public BigDecimal getSeq() {
return this.seq;
}
public void setSeq(BigDecimal seq) {
this.seq = seq;
}
public String getStatus() {
return this.status;
}
public void setStatus(String status) {
this.status = status;
}
public String getVemeh() {
return this.vemeh;
}
public void setVemeh(String vemeh) {
this.vemeh = vemeh;
}
public String getVemng() {
return this.vemng;
}
public void setVemng(String vemng) {
this.vemng = vemng;
}
public ZaeProdorder getZaeProdorder() {
return this.zaeProdorder;
}
public void setZaeProdorder(ZaeProdorder zaeProdorder) {
this.zaeProdorder = zaeProdorder;
}
}
我创建了一个servicefactory类,如下所示: 的 CarandoServiceFactory,JAVA
package com;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import org.apache.olingo.odata2.processor.api.jpa.ODataJPAContext;
import org.apache.olingo.odata2.processor.api.jpa.ODataJPAServiceFactory;
import org.apache.olingo.odata2.processor.api.jpa.exception.ODataJPARuntimeException;
public class CarandoServiceFactory extends ODataJPAServiceFactory{
private static final String PERSISTENCE_UNIT_NAME = "carandoUI5Demo";
@Override
public ODataJPAContext initializeODataJPAContext()
throws ODataJPARuntimeException {
ODataJPAContext oDatJPAContext = this.getODataJPAContext();
try {
EntityManagerFactory emf = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME);
oDatJPAContext.setEntityManagerFactory(emf);
oDatJPAContext.setPersistenceUnitName(PERSISTENCE_UNIT_NAME);
return oDatJPAContext;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
但是现在当我运行我的odata服务时,我收到了以下错误:
<error xmlns="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata">
<code/>
<message xml:lang="en">
"sun.reflect.NativeMethodAccessorImpl: object is not an instance of declaring class. "
</message>
</error>
我无法获得更详细的堆栈跟踪。 请帮我解决这个问题。
odata服务
XXXXXcarandoUI5Demo/carando.svc/ZaeProdorders?$top=20
给了我错误。
XXXXXXXXXcarandoUI5Demo/carando.svc
工作正常的地方。
以下是元数据信息
XXXXXXXXXcarandoUI5Demo/carando.svc/$metadata
This XML file does not appear to have any style information associated with it. The document tree is shown below.
<edmx:Edmx xmlns:edmx="http://schemas.microsoft.com/ado/2007/06/edmx" Version="1.0">
<edmx:DataServices xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" m:DataServiceVersion="1.0">
<Schema xmlns="http://schemas.microsoft.com/ado/2008/09/edm" Namespace="carandoUI5Demo">
<EntityType Name="ZaeGoodsrecpt">
<Key>
<PropertyRef Name="Aufnr"/>
<PropertyRef Name="ExidvC"/>
<PropertyRef Name="ExidvP"/>
<PropertyRef Name="Werks"/>
</Key>
<Property Name="Barcode" Type="Edm.String" Nullable="true" MaxLength="70"/>
<Property Name="Bfdat" Type="Edm.String" Nullable="true" MaxLength="40"/>
<Property Name="Charg" Type="Edm.String" Nullable="true" MaxLength="20"/>
<Property Name="Cookcode" Type="Edm.String" Nullable="true" MaxLength="10"/>
<Property Name="Cwmvemeh" Type="Edm.String" Nullable="true" MaxLength="3"/>
<Property Name="Cwmvemng" Type="Edm.String" Nullable="true" MaxLength="25"/>
<Property Name="Hsdat" Type="Edm.String" Nullable="true" MaxLength="10"/>
<Property Name="Aufnr" Type="Edm.String" Nullable="false" MaxLength="12"/>
<Property Name="ExidvC" Type="Edm.String" Nullable="false" MaxLength="20"/>
<Property Name="ExidvP" Type="Edm.String" Nullable="false" MaxLength="20"/>
<Property Name="Werks" Type="Edm.String" Nullable="false" MaxLength="4"/>
<Property Name="Indc" Type="Edm.String" Nullable="true" MaxLength="1"/>
<Property Name="Manuf" Type="Edm.String" Nullable="true" MaxLength="5"/>
<Property Name="Matnr" Type="Edm.String" Nullable="true" MaxLength="18"/>
<Property Name="Mblnr" Type="Edm.String" Nullable="true" MaxLength="10"/>
<Property Name="Mjahr" Type="Edm.String" Nullable="true" MaxLength="4"/>
<Property Name="Printdate" Type="Edm.String" Nullable="true" MaxLength="20"/>
<Property Name="Proddate" Type="Edm.DateTime"/>
<Property Name="Seq" Type="Edm.Decimal" Nullable="true" Precision="10"/>
<Property Name="Status" Type="Edm.String" Nullable="false" MaxLength="1"/>
<Property Name="Vemeh" Type="Edm.String" Nullable="true" MaxLength="3"/>
<Property Name="Vemng" Type="Edm.String" Nullable="true" MaxLength="17"/>
</EntityType>
<EntityType Name="ZaeProdorder">
<Key>
<PropertyRef Name="Aufnr"/>
<PropertyRef Name="Werks"/>
</Key>
<Property Name="Barcode" Type="Edm.String" Nullable="true" MaxLength="50"/>
<Property Name="Batch" Type="Edm.String" Nullable="true" MaxLength="10"/>
<Property Name="Bfdat" Type="Edm.String" Nullable="true" MaxLength="40"/>
<Property Name="Cardate" Type="Edm.String" Nullable="true" MaxLength="12"/>
<Property Name="Ccook" Type="Edm.String" Nullable="true" MaxLength="4"/>
<Property Name="Compad" Type="Edm.String" Nullable="true" MaxLength="60"/>
<Property Name="Ean11" Type="Edm.String" Nullable="true" MaxLength="18"/>
<Property Name="Eddat" Type="Edm.String" Nullable="true" MaxLength="10"/>
<Property Name="Fifth" Type="Edm.String" Nullable="true" MaxLength="60"/>
<Property Name="Firstl" Type="Edm.String" Nullable="true" MaxLength="60"/>
<Property Name="Fld1" Type="Edm.String" Nullable="true" MaxLength="20"/>
<Property Name="Fld10" Type="Edm.String" Nullable="true" MaxLength="40"/>
<Property Name="Fld11" Type="Edm.String" Nullable="true" MaxLength="60"/>
<Property Name="Fld12" Type="Edm.String" Nullable="true" MaxLength="60"/>
<Property Name="Fld13" Type="Edm.String" Nullable="true" MaxLength="60"/>
<Property Name="Fld2" Type="Edm.String" Nullable="true" MaxLength="20"/>
<Property Name="Fld3" Type="Edm.String" Nullable="true" MaxLength="20"/>
<Property Name="Fld4" Type="Edm.String" Nullable="true" MaxLength="20"/>
<Property Name="Fld5" Type="Edm.String" Nullable="true" MaxLength="20"/>
<Property Name="Fld6" Type="Edm.String" Nullable="true" MaxLength="20"/>
<Property Name="Fld7" Type="Edm.String" Nullable="true" MaxLength="20"/>
<Property Name="Fld8" Type="Edm.String" Nullable="true" MaxLength="20"/>
<Property Name="Fld9" Type="Edm.String" Nullable="true" MaxLength="30"/>
<Property Name="Fourth" Type="Edm.String" Nullable="true" MaxLength="60"/>
<Property Name="Hsdate" Type="Edm.String" Nullable="true" MaxLength="12"/>
<Property Name="Aufnr" Type="Edm.String" Nullable="false" MaxLength="12"/>
<Property Name="Werks" Type="Edm.String" Nullable="false" MaxLength="4"/>
<Property Name="Jldat" Type="Edm.String" Nullable="true" MaxLength="4"/>
<Property Name="Jobno" Type="Edm.String" Nullable="true" MaxLength="5"/>
<Property Name="Lblno" Type="Edm.String" Nullable="true" MaxLength="6"/>
<Property Name="Line" Type="Edm.String" Nullable="true" MaxLength="9"/>
<Property Name="Lotno" Type="Edm.String" Nullable="true" MaxLength="10"/>
<Property Name="Maktx" Type="Edm.String" Nullable="true" MaxLength="40"/>
<Property Name="Manuf" Type="Edm.String" Nullable="true" MaxLength="5"/>
<Property Name="Matnr" Type="Edm.String" Nullable="true" MaxLength="5"/>
<Property Name="Ptype" Type="Edm.String" Nullable="true" MaxLength="1"/>
<Property Name="Qlify" Type="Edm.String" Nullable="true" MaxLength="60"/>
<Property Name="Rfgnf" Type="Edm.String" Nullable="true" MaxLength="45"/>
<Property Name="Secondl" Type="Edm.String" Nullable="true" MaxLength="60"/>
<Property Name="Serno" Type="Edm.String" Nullable="true" MaxLength="12"/>
<Property Name="Shift" Type="Edm.String" Nullable="true" MaxLength="1"/>
<Property Name="Sixth" Type="Edm.String" Nullable="true" MaxLength="60"/>
<Property Name="Slabd" Type="Edm.String" Nullable="true" MaxLength="10"/>
<Property Name="Tarag" Type="Edm.String" Nullable="true" MaxLength="10"/>
<Property Name="Teco" Type="Edm.String" Nullable="true" MaxLength="4"/>
<Property Name="Third" Type="Edm.String" Nullable="true" MaxLength="60"/>
<Property Name="Tihigh" Type="Edm.String" Nullable="true" MaxLength="40"/>
<Property Name="Title" Type="Edm.String" Nullable="true" MaxLength="60"/>
<Property Name="Tolerance" Type="Edm.Double" Nullable="true"/>
<Property Name="Weight" Type="Edm.String" Nullable="true" MaxLength="20"/>
<Property Name="Weight1" Type="Edm.String" Nullable="true" MaxLength="5"/>
<Property Name="Wgtkg" Type="Edm.String" Nullable="true" MaxLength="8"/>
</EntityType>
<EntityContainer Name="carandoUI5DemoContainer" m:IsDefaultEntityContainer="true">
<EntitySet Name="ZaeGoodsrecpts" EntityType="carandoUI5Demo.ZaeGoodsrecpt"/>
<EntitySet Name="ZaeProdorders" EntityType="carandoUI5Demo.ZaeProdorder"/>
</EntityContainer>
</Schema>
</edmx:DataServices>
</edmx:Edmx>