Hola a todos,
Implementé un servicio OData que es consumido por SAPUI5 en el frontend usando Apache Olingo. Ese servicio funciona perfectamente, siempre y cuando no haya una relación ManyToOne en una entidad JPA. Accedo a la base de datos Classiccars Derby de MyEclipse para probar las cosas. La entidad Customers está bien, todo funciona bien con OData, porque esta entidad tiene una relación OneToMany con Payments.
Si ahora quiero acceder a la entidad Payment a través de OData (ManyToOne -> Customer) obtengo una SimpleTypeException:
"org.apache.olingo.odata2.api.edm.EdmSimpleTypeException"
,
"El tipo 'class org.globus.de.odataservice.data.dataobjects.Customer' del objeto de valor no es compatible."
Eso no está mal, sé que mi clase Customer no es un EdmSimepleType, por lo tanto la excepción podría ser correcta. Pero cuando elimino la relación en la entidad e intento acceder a los datos nuevamente, el mismo error ocurre para double, String, integer, no importa el tipo - siempre obtengo una EdmSimpleTypeException. Algo claramente está yendo mal aquí - esto solo ocurre con las relaciones ManyToOne.
¿Hay algo que me esté perdiendo en la entidad?
Aquí el código:
Entidad Payment
/**
* Clase persistente para la tabla de base de datos PAYMENT.
*
*/
@Entity
public class Payment implements Serializable {
private static final long serialVersionUID = 1L;
@EmbeddedId
private PaymentPK id;
private double amount;
private String paymentdate;
//asociación bidireccional de muchos a uno a Customer
@ManyToOne
@JoinColumn(name="CUSTOMERNUMBER")
private Customer customer;
public Payment() {
}
public PaymentPK getId() {
return this.id;
}
public void setId(PaymentPK id) {
this.id = id;
}
public double getAmount() {
return this.amount;
}
public void setAmount(double amount) {
this.amount = amount;
}
public String getPaymentdate() {
return this.paymentdate;
}
public void setPaymentdate(String paymentdate) {
this.paymentdate = paymentdate;
}
public Customer getCustomer() {
return this.customer;
}
public void setCustomer(Customer customer) {
this.customer = customer;
}
}
Entidad Customer Relacionada
/**
* Clase persistente para la tabla de base de datos CUSTOMER.
*
*/
@Entity
public class Customer implements Serializable {
private static final long serialVersionUID = 1L;
@Id
private int customernumber;
private String addressline1;
private String