Avalados por :

Solucionando Exception EdmSimpleTypeException en Servicio OData con Apache Olingo y SAPUI5

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

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

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

2 Respuestas

0
Cargando...

Hola Michael,

El problema ya no existe, logramos solucionarlo. Reconstruimos completamente el lado del servidor y codificamos las entidades manualmente. Las entidades generadas aún fallan en términos de relaciones, pero las 'hechas a mano' funcionan.

¡Pero gracias por tu consejo!

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

¡Hola Tobias!

¿Todavía es este un problema actual para ti?

Si es así, podrías crear un problema en el Olingo JIRA oficial ( https://issues.apache.org/jira/browse/OLINGO ) para esto.

Pero antes de que crees un problema, sería bueno si pudieras verificar si este problema todavía existe en la versión más reciente ( 2.0.2 ) de Olingo.

Saludos cordiales,

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?