Avalados por :

Resolvendo Exception EdmSimpleTypeException em Serviço OData com Apache Olingo e SAPUI5

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 1 Vistas
0
Cargando...

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;

Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

2 Respuestas

0
Cargando...

Olá Michael,

O problema já não existe, conseguimos resolvê-lo. Reconstruímos completamente o lado do servidor e codificamos manualmente as entidades. As entidades geradas ainda falham em termos de relações, mas as 'feitas à mão' funcionam.

°Mas obrigado pelo seu conselho!

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Olá Tobias!

Ainda é este um problema atual para você?

Se for o caso, você poderia criar um problema no Olingo JIRA oficial ( https://issues.apache.org/jira/browse/OLINGO ) para isso.

Mas antes de criar um problema, seria bom se você pudesse verificar se este problema ainda existe na versão mais recente ( 2.0.2 ) do Olingo.

Cumprimentos,

Michael

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?