Olá a todos,
Implementei um serviço OData que é consumido pelo SAPUI5 no frontend usando o Apache Olingo. Esse serviço funciona perfeitamente, desde que não haja uma relação ManyToOne em uma entidade JPA. Acesso a base de dados Classiccars Derby do MyEclipse para testar as coisas. A entidade Customers está funcionando bem, tudo está funcionando bem com o OData, porque essa entidade tem uma relação OneToMany com Payments.
Se agora eu quiser acessar a entidade Payment através do OData (ManyToOne -> Customer), recebo uma SimpleTypeException:
"org.apache.olingo.odata2.api.edm.EdmSimpleTypeException"
,
"O tipo 'class org.globus.de.odataservice.data.dataobjects.Customer' do objeto de valor não é compatível."
Isso não está errado, sei que minha classe Customer não é um EdmSimepleType, portanto a exceção pode estar correta. Mas quando eu removo a relação na entidade e tento acessar os dados novamente, o mesmo erro ocorre para double, String, integer, não importa o tipo - sempre recebo uma EdmSimpleTypeException. Algo claramente está errado aqui - isso só acontece com as relações ManyToOne.
Há algo que estou perdendo na entidade?
Aqui está o código:
Entidade Payment
/**
* Classe persistente para a tabela de base de dados PAYMENT.
*
*/
@Entity
public class Payment implements Serializable {
private static final long serialVersionUID = 1L;
@EmbeddedId
private PaymentPK id;
private double amount;
private String paymentdate;
//associação bidirecional de muitos para um com 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;
}
}
Entidade Customer Relacionada
/**
* Classe persistente para a tabela de base de dados CUSTOMER.
*
*/
@Entity
public class Customer implements Serializable {
private static final long serialVersionUID = 1L;
@Id
private int customernumber;
private String addressline1;