No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Convierte tus certificados en títulos universitarios en USA

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

18 Días
3 Hrs
25 Min
33 Seg
Curso de Java Spring

Curso de Java Spring

Alejandro Ramírez

Alejandro Ramírez

Probando nuestros servicios de compras

30/35
Recursos

Aportes 36

Preguntas 32

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

si alguno le sale este error Caused by: org.postgresql.util.PSQLException: Bad value for type int : 3104583224 al tratar de consultar el servicio all de compras, deben cambiar el tipo de dato del campo celular de la clase Entity Cliente.java pasando de Integer a Long y por consiguiente tambien cambiar los metodos Getter y Setter del mismo:

private Long celular;

public Long getCelular() {
	return celular;
}

public void setCelular(Long celular) {
	this.celular = celular;
}

Si alguno tiene este error:
org.postgresql.util.PSQLException: ERROR: no existe la relaci�n �compras_producto�
Revisen los nombres de las tablas en las anotaciones @Table de los entities. En mi caso tenía mapeada la tabla compras_productos como compras_producto, sin la s. En el entity de ComprasProducto.

Hola compañeros aprendices.
Quiero mostrarles un detalle menor, pero ello me llevó tiempo descubrirlo y corregirlo.
El error como se aprecia esta en la importación de la clase incorrecta.
![](
Ojala a nadie más le haya pasado.

Alguien me puede decir por que me marca este error?

Caused by: org.postgresql.util.PSQLException: ERROR: el operador no existe: character varying = integer

este es mi codigo https://github.com/kreytos23/API_Spring

RECORDATORIO: Si tenemos un error en las clases de los Mappers, verificar que todos los atributos de las clases de los Entities tengan sus respectivos Setters y Getters.
A mi me ocurrió eso.

Saludos a todos !!

Al momento de mostrar el purchases/all y se consulta el puchaseId 2 que fue la segunda compra creada, en el arreglo de items aparece vació como si no se hubiera asociado ningún producto. A alguien mas le paso?

Tuve problemas con el save, pero era porque no sabia como meter los datos en Postman, les dejo en Json ojala les sirva
{
“clienteId”: “4546221”,
“date”: “2020-08-10T17:30:00”,
“paymentMethod”: “T”,
“comment”: “”,
“state”: “P”,
“iteam”: [
{
“productId”: 1,
“quantity”: 10,
“total”: 3000.0,
“active”: true
},
{
“productId”: 24,
“quantity”: 1,
“total”: 4000.0,
“active”: true
},
{
“productId”: 27,
“quantity”: 1,
“total”: 9000.0,
“active”: true
},
{
“productId”: 36,
“quantity”: 1,
“total”: 40000.0,
“active”: true
},
{
“productId”: 49,
“quantity”: 2,
“total”: 16400.0,
“active”: true
}
]
}

Si a alguno le sale este error en la consola al consultar el /all de los purchases

Caused by: java.io.StreamCorruptedException: invalid stream header: 33313034

Tambien es debido al campo celular de la clase Cliente.java, deben cambiarlo de Number a Long y así mismo modificar sus Getter and Setter

Respecto al método getByClient() no debería retornar estado 200 cuando se busca con un clientId que no exista en la base de datos, debería ser el NOT_FOUND, es decir, cuando retorna una lista vacia esta poniendo el estado como OK, en vez de poner NOT_FOUND.

Paso lo mismo con el método getByCategory de la clase ProductController.

Creo que en vez de usar el .map, se debería validar el tamaño de la lista que viene desde el service.

Buenos días compañeros yo tuve el siguiente problema al querer obtenere mi lista de compras:

org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.platzi.supermercado.persistence.entity.Compra.productos, could not initialize proxy - no Session

Este problema según investigue es por que se cierra la sesión de hibernate antes de recuperar la lista de compras_productos, para esto hay dos soluciones la primera es un pequeño hack que debemos recuperar la lista antes de cerrar la sesión con el metodo size();

Y la segunda es colocar la anotación EAGER, espero que les ayude

@OneToMany(mappedBy = "compra", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
    private List<ComprasProducto> productos;

Les de por aca el Json

{
    "clientId": "4546221",
    "date": "2004-08-10T17:30:00",
    "paymentMethod": "T",
    "comment": "",
    "state": "P",
    "items": [
      {
        "productId": 1,
        "quantity": 10,
        "total": 3000.0,
        "active": true
      },
      {
        "productId": 24,
        "quantity": 1,
        "total": 4000.0,
        "active": true
      },
      {
        "productId": 27,
        "quantity": 1,
        "total": 9000.0,
        "active": true
      },
      {
        "productId": 36,
        "quantity": 1,
        "total": 40000.0,
        "active": true
      },
      {
        "productId": 49,
        "quantity": 2,
        "total": 16400.0,
        "active": true
      }
    ]
  }

Hola a todos al momento de guardar una nueva compra me sale la siguiente excepción:
.w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize instance of com.platzi.market.domain.Purchase out of START_ARRAY token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of com.platzi.market.domain.Purchase out of START_ARRAY token
at [Source: (PushbackInputStream); line: 1, column: 1]].
ya cheque la clase Purchase del dominio pero no encuentro diferencias con el codigo realizado por el profesor.

Tengo el siguiente error en Postman y el metodo save tiene el @PostMapping("/save"), no se cual sea mi error.

¿Alguien puede ayudarme con este problema?

2021-03-01 20:19:29.259 ERROR 3636 — [nio-8090-exec-2] o.a.c.c.C.[.[.[.[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [/platzi-market/api] threw exception [Request processing failed; nested exception is org.springframework.dao.DataIntegrityViolationException: A different object with the same identifier value was already associated with the session : [com.platzi.market.persistence.entity.ComprasProducto#com.platzi.market.persistence.entity.ComprasProductoPK@6154230d]; nested exception is javax.persistence.EntityExistsException: A different object with the same identifier value was already associated with the session : [com.platzi.market.persistence.entity.ComprasProducto#com.platzi.market.persistence.entity.ComprasProductoPK@6154230d]] with root cause

javax.persistence.EntityExistsException: A different object with the same identifier value was already associated with the session : [com.platzi.market.persistence.entity.ComprasProducto#com.platzi.market.persistence.entity.ComprasProductoPK@6154230d]

![](https://static.platzi.com/media/user_upload/image-1c04fd69-f231-4373-966d-db12333653e0.jpg) Me salio este error en el postman y revise por mucho tiempoy si todo esta como en los recursos lo que pasa es que al enviar el request es de esta manera ```js { "clientId": "4546221", "date": "2004-07-10T17:30:00", "paymentMethod": "T", "comment": "Nueva compra", "state": "P", "items": [ { "productId": 1, "quantity": 10, "total": 3000.0, "active": true }, { "productId": 24, "quantity": 1, "total": 4000.0, "active": true }, { "productId": 27, "quantity": 1, "total": 9000.0, "active": true }, { "productId": 36, "quantity": 1, "total": 40000.0, "active": true }, { "productId": 49, "quantity": 2, "total": 16400.0, "active": true } ] } ```el problema son los corchetes al principio y el del final

Buenas noches alguien que me pueda ayudar por favor tengo el sgt error segun dice que no puede castear o convertir algo error sql

Costo esta parte… al no tener claro el tema y hacer tanto antes de probar cuesta mucho encontrar el error.

Por si a aluien le da un error de que el server espera un objeto de tipo purchase pero recibe un arreglo, es lo los [] mas externos, madre mia el tiempo que perdí buscando donde estaba la falla >:V

Tengo el siguiente problema. La aplicación corre sin problemas pero al ejecutar la petición /purchases/all obtengo un error. Internamente me genera la siguiente traza:

org.postgresql.util.PSQLException: ERROR: column compra0_.id does not exist

No sé donde puede estar ubicado.

Alguien que me ayude con este error?

Caused by: org.postgresql.util.PSQLException: ERROR: el operador no existe: character varying = integer

Porfavor gracias , ya hice private String idCliente; en la clase Compra.
???

Alguien Más recibió la siguiente Respuesta

El Body enviado es el siguiente…

Tuve que escribir un constructor de la entidad ComprasProducto porque me arrojaba error 500

Database Data Script:

-- CATEGORIAS
INSERT INTO categorias VALUES (1, 'Frutas y verduras', true);
INSERT INTO categorias VALUES (2, 'Pastelería', true);
INSERT INTO categorias VALUES (3, 'Carnes y pescados', true);
INSERT INTO categorias VALUES (4, 'Lácteos y huevos', true);
INSERT INTO categorias VALUES (5, 'Bebidas', true);
INSERT INTO categorias VALUES (6, 'Licores', true);
INSERT INTO categorias VALUES (7, 'Cuidado personal', true);
INSERT INTO categorias VALUES (8, 'Despensa', true);

-- PRODUCTOS
INSERT INTO productos VALUES (1, 'Guayaba Feijoa', 1, '7029 A42 23', 300, 500, true);
INSERT INTO productos VALUES (2, 'Mango', 1, '0316 R56 01', 2100, 250, true);
INSERT INTO productos VALUES (3, 'Manzana', 1, '7923 T23 19', 700, 130, true);
INSERT INTO productos VALUES (4, 'Aguacate', 1, '9322 Q33 02', 2500, 98, true);
INSERT INTO productos VALUES (5, 'Lechuga', 1, '9742 S22 21', 4000, 86, true);
INSERT INTO productos VALUES (6, 'Tomate', 1, '0483 R00 97', 290, 430, true);
INSERT INTO productos VALUES (7, 'Pera', 1, '9999 X10 01', 750, 210, true);
INSERT INTO productos VALUES (8, 'Apio', 1, '3390 F29 45', 150, 115, true);
INSERT INTO productos VALUES (9, 'Papaya', 1, '5291 J34 32', 4500, 73, true);
INSERT INTO productos VALUES (10, 'Limón', 1, '7886 N18 32', 350, 425, true);
INSERT INTO productos VALUES (11, 'Brownie', 2, '6683 H15 20', 2500, 80, true);
INSERT INTO productos VALUES (12, 'Pan tajado', 2, '5745 F05 47', 4500, 120, true);
INSERT INTO productos VALUES (13, 'Torta', 2, '3831 D97 99', 10000, 35, true);
INSERT INTO productos VALUES (14, 'Tortilla', 2, '4335 Z33 84', 6400, 87, true);
INSERT INTO productos VALUES (15, 'Tostadas', 2, '6584 M19 25', 4000, 45, true);
INSERT INTO productos VALUES (16, 'Chocorramo', 2, '4487 S00 97', 2000, 105, true);
INSERT INTO productos VALUES (17, 'Salmón', 3, '4546 A00 01', 28000, 55, true);
INSERT INTO productos VALUES (18, 'Punta de anca', 3, '3678 E57 22', 12000, 32, true);
INSERT INTO productos VALUES (19, 'Posta', 3, '8893 O01 03', 7800, 40, true);
INSERT INTO productos VALUES (20, 'Costilla de cerdo', 3, '4534 Q12 88', 8600, 70, true);
INSERT INTO productos VALUES (21, 'Tilapia', 3, '5684 R53 02', 17000, 60, true);
INSERT INTO productos VALUES (22, 'Merluza', 3, '3523 R04 00', 23000, 45, true);
INSERT INTO productos VALUES (23, 'Leche de vaca', 4, '2323 T56 33', 2500, 500, true);
INSERT INTO productos VALUES (24, 'Queso', 4, '7786 K19 56', 4000, 300, true);
INSERT INTO productos VALUES (25, 'Huevos de gallina feliz', 4, '3478 M74 01', 400, 1000, true);
INSERT INTO productos VALUES (26, 'Clara de huevo', 4, '7932 R31 46', 3200, 200, true);
INSERT INTO productos VALUES (27, 'Suero costeño', 4, '5463 W23 33', 9000, 110, true);
INSERT INTO productos VALUES (28, 'Agua', 5, '8965 I32 11', 2000, 600, true);
INSERT INTO productos VALUES (29, 'Jugo de naranja', 5, '7445 T87 44', 7400, 200, true);
INSERT INTO productos VALUES (30, 'Gaseosa Colombiana', 5, '3434 R34 63', 3100, 175, true);
INSERT INTO productos VALUES (31, 'Jugo de Lulo', 5, '9753 W33 19', 8250, 630, true);
INSERT INTO productos VALUES (32, 'Tea', 5, '9836 F35 69', 1900, 450, true);
INSERT INTO productos VALUES (33, 'Cerveza', 6, '3432 G67 21', 2100, 800, true);
INSERT INTO productos VALUES (34, 'Tequila', 6, '9529 E45 98', 65000, 764, true);
INSERT INTO productos VALUES (35, 'Ron', 6, '1947 R07 53', 55000, 240, true);
INSERT INTO productos VALUES (36, 'Aguardiente Antioqueño', 6, '3160 A54 94', 40000, 480, true);
INSERT INTO productos VALUES (37, 'Vino', 6, '7891 W46 95', 82000, 560, true);
INSERT INTO productos VALUES (38, 'Crema dental', 7, '6310 C99 73', 7500, 200, true);
INSERT INTO productos VALUES (39, 'Jabón de manos', 7, '9371 J14 75', 4900, 90, true);
INSERT INTO productos VALUES (40, 'Enjuague bucal', 7, '1942 T68 01', 12000, 105, true);
INSERT INTO productos VALUES (41, 'Shampoo', 7, '6789 W01 23', 9300, 200, true);
INSERT INTO productos VALUES (42, 'Desodorante', 7, '7333 S21 36', 6900, 85, true);
INSERT INTO productos VALUES (43, 'Arroz', 8, '4676 I83 00', 3500, 600, true);
INSERT INTO productos VALUES (44, 'Lentejas', 8, '7333 S21 36', 3000, 560, true);
INSERT INTO productos VALUES (45, 'Harina', 8, '7333 S21 36', 1800, 300, true);
INSERT INTO productos VALUES (46, 'Sal', 8, '7333 S21 36', 1400, 500, true);
INSERT INTO productos VALUES (47, 'Aceite', 8, '7333 S21 36', 6500, 135, true);
INSERT INTO productos VALUES (48, 'Cereal', 8, '4673 K53 98', 7000, 75, true);
INSERT INTO productos VALUES (49, 'Frijol', 8, '2745 F40 45', 8200, 270, true);
INSERT INTO productos VALUES (50, 'Café', 8, '6351 R33 92', 7200, 400, true);

-- CLIENTES
INSERT INTO clientes VALUES (1, '4546221', 'Johannes', 'Kepler', 3104583224, 'Cl 3 # 33 - 33', '[email protected]');
INSERT INTO clientes VALUES (2, '2552243', 'Galileo', 'Galilei', 3462257293, 'Cl 1 # 11 - 11', '[email protected]');
INSERT INTO clientes VALUES (3, '983824', 'Nicolás', 'Copernico', 3019392466, 'Cl 2 # 22 - 22', '[email protected]');

-- COMPRA
INSERT INTO compras VALUES (1, 1, TO_TIMESTAMP('10/08/1992 17:30:00','DD/MM/YYYY HH24:MI:SS'), 'E', '', 'P');
INSERT INTO compras_productos VALUES (1, 1, 10, 3000, true);
INSERT INTO compras_productos VALUES (1, 36, 1, 40000, true);
INSERT INTO compras_productos VALUES (1, 27, 1, 9000, true);
INSERT INTO compras_productos VALUES (1, 49, 2, 16400, true);
INSERT INTO compras_productos VALUES (1, 24, 1, 4000, true);

-- SE REINICIAN LAS SECUENCIAS SEGÚN LOS DATOS INICIALES
CREATE SEQUENCE IF NOT exists public.productos_id_producto_seq AS INT INCREMENT by 1 MINVALUE 1 START WITH 1 no CYCLE OWNED by productos.id_producto;
SELECT setval('public.productos_id_producto_seq', 50, true);
CREATE SEQUENCE IF NOT exists public.categorias_id_categoria_seq AS INT INCREMENT by 1 MINVALUE 1 START WITH 1 no CYCLE OWNED by categorias.id_categoria;
SELECT setval('public.categorias_id_categoria_seq', 8, true);
CREATE SEQUENCE IF NOT exists public.compras_id_compra_seq AS INT INCREMENT by 1 MINVALUE 1 START WITH 1 no CYCLE OWNED by compras.id_compra;
SELECT setval('public.compras_id_compra_seq', 1, true);

Buenas tardes, alguien mas le dio el siguiente error y si pudiera compartir como lo soluciono.

Caused by: org.postgresql.util.PSQLException: Bad value for type int : 3104583224
org.hibernate.exception.DataException: Could not read entity state from ResultSet : EntityKey[com.platzi.market.persistence.entity.Cliente#4546221]

Esto me lo muestra cuando intento consultar las compras

Buenas!
Cual curso es mas recomendable. Este o el de Anahi Salgado?

ayuda, cuando hago el get all de purchases, me sale esto:

{
        "purchaseId": 1,
        "clientId": "4546221",
        "date": "1992-08-10T17:30:00",
        "paymentMethod": "E",
        "comment": "",
        "state": "P",
        "items": [
            {
                "id": {
                    "idCompra": 1,
                    "idProducto": 1
                },
                "cantidad": 10,
                "total": 3000.0,
                "estado": true,
                "compra": {
                    "idCompra": 1,
                    "idCliente": "4546221",
                    "fecha": "1992-08-10T17:30:00",
                    "medioPago": "E",
                    "comentario": "",
                    "estado": "P",
                    "cliente": {
                        "id": "4546221",
                        "nombre": "Johannes",
                        "apellidos": "Kepler",
                        "celular": 3104583224,
                        "direccion": "Cl 3 # 33 - 33",
                        "correoElectronico": "[email protected]",
                        "compras": [
                            {
                                "idCompra": 1,
                                "idCliente": "4546221",
                                "fecha": "1992-08-10T17:30:00",
                                "medioPago": "E",
                                "comentario": "",
                                "estado": "P",
                                "cliente": {
                                    "id": "4546221",
                                    "nombre": "Johannes",
                                    "apellidos": "Kepler",
                                    "celular": 3104583224,
                                    "direccion": "Cl 3 # 33 - 33",
                                    "correoElectronico": "[email protected]",
                                    "compras": [
                                        {
                                            "idCompra": 1,
                                            "idCliente": "4546221",
                                            "fecha": "1992-08-10T17:30:00",
                                            "medioPago": "E",
                                            "comentario": "",
                                            "estado": "P",
                                            "cliente": {
                                                "id": "4546221",
                                                "nombre": "Johannes",
                                                "apellidos": "Kepler",
                                                "celular": 3104583224,
                                                "direccion": "Cl 3 # 33 - 33",
                                                "correoElectronico": "[email protected]",
                                                "compras": [
                                                    {
                                                        "idCompra": 1,
                                                        "idCliente": "4546221",
                                                        "fecha": "1992-08-10T17:30:00",
                                                        "medioPago": "E",
                                                        "comentario": "",
                                                        "estado": "P",
                                                        "cliente": {

me resultan muchos resultados en cascada

Hola por si a alguien mas le pasa, yo tenia dos errores en la clase Cliente (java/com/platzi/market/persistence/entity/Cliente.java) fue cambiar de ` @Id` ` @Column(name = "id")` ` private Integer idCliente;` a ` @Id` ` @Column(name = "id")` ` private String idCliente;` y ` private Integer celular;` a ` private Long celular;` y me funciono, no olvides borrar y volver a crear los getters y setters
Tube un error en el save() pero era porque no sabía muy bien como meter datos en JSON. Así que resiven si tienen un error de este tipo: ```js .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize value of type `com.platzi.market.domain.DomainPurchase` from Array value (token `JsonToken.START_ARRAY`)] ``` Solo es revisar detalladamente cómo están haciendo el proceso en postman
Alguien mas le pasa esto? Execution failed for task ':PruebasSprintApplication.main()'. \> Process 'command 'C:\Program Files\Eclipse Adoptium\jdk-17.0.6.10-hotspot\bin\java.exe'' finished with non-zero exit value 1 \* Try: \> Run with --stacktrace option to get the stack trace. \> Run with --scan to get full insights. \> Get more help at <https://help.gradle.org.>
Tengo este error a la hora de invocar /save, alguien me puedo orientar: java.lang.NullPointerException: Cannot invoke "java.util.List.forEach(java.util.function.Consumer)" because the return value of "com.platzi.market.persistence.entity.Compra.getProductos()" is null at com.platzi.market.persistence.CompraRepository.save(CompraRepository.java:34) ~\[main/:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~\[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~\[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~\[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~\[na:na] at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:352) ~\[spring-aop-6.1.1.jar:6.1.1]

¡Excelente!

Recuerden que el estado de compras es String y no booleano

Postgresql Database Script:

-- Table CATEGORIAS
-- drop table CATEGORIAS CASCADE;
CREATE TABLE CATEGORIAS (
id_categoria INT NOT NULL,
descripcion VARCHAR(45) NOT NULL,
estado BOOLEAN NOT NULL,
PRIMARY KEY (id_categoria));

-- Table PRODUCTOS
-- drop table PRODUCTOS CASCADE;
CREATE TABLE PRODUCTOS (
id_producto INT NOT NULL,
nombre VARCHAR(45) NULL,
id_categoria INT NOT NULL,
codigo_barras VARCHAR(150) NULL,
precio_venta DECIMAL(16,2) NULL,
cantidad_stock INT NOT NULL,
estado BOOLEAN NULL,
PRIMARY KEY (id_producto),
CONSTRAINT "fk_PRODUCTOS_CATEGORIAS"
FOREIGN KEY (id_categoria)
REFERENCES CATEGORIAS (id_categoria)
ON DELETE NO ACTION
ON UPDATE NO ACTION);

-- Table CLIENTES
-- drop table CLIENTES CASCADE;
CREATE TABLE CLIENTES (
id INT,
identificacion VARCHAR(20) NOT NULL,
nombre VARCHAR(40) NULL,
apellidos VARCHAR(100) NULL,
celular VARCHAR(20) NULL,
direccion VARCHAR(80) NULL,
correo_electronico VARCHAR(70) NULL,
PRIMARY KEY (id),
unique (identificacion)
);

-- Table COMPRAS
-- drop table COMPRAS CASCADE;
CREATE TABLE COMPRAS (
id_compra INT NOT NULL,
id_cliente INT NOT NULL,
fecha TIMESTAMP NULL,
medio_pago CHAR(1) NULL,
comentario VARCHAR(300) NULL,
estado CHAR(1) NULL,
PRIMARY KEY (id_compra),
CONSTRAINT "fk_COMPRAS_CLIENTES1"
FOREIGN KEY (id_cliente)
REFERENCES CLIENTES (id)
ON DELETE NO ACTION
ON UPDATE NO ACTION);

-- Table COMPRAS_PRODUCTOS
-- drop table COMPRAS_PRODUCTOS CASCADE;
CREATE TABLE COMPRAS_PRODUCTOS (
id_compra INT NOT NULL,
id_producto INT NOT NULL,
cantidad INT NULL,
total DECIMAL(16,2) NULL,
estado BOOLEAN NULL,
PRIMARY KEY (id_compra, id_producto),
CONSTRAINT "fk_COMPRAS_PRODUCTOS_PRODUCTOS1"
FOREIGN KEY (id_producto)
REFERENCES PRODUCTOS (id_producto)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT "fk_COMPRAS_PRODUCTOS_COMPRAS1"
FOREIGN KEY (id_compra)
REFERENCES COMPRAS (id_compra)
ON DELETE NO ACTION
ON UPDATE NO ACTION);
  • PurchaseService.java

@Service
public class PurchaseService {

@Autowired
private PurchaseRepository purchaseRepository;

public List<Purchase> getAll() {
    return purchaseRepository.getAll();
}

public Optional<List<Purchase>> getByClientId(String clientId) {
    return purchaseRepository.getByClientId(clientId);
}

public Purchase save(Purchase purchase) {
    return purchaseRepository.save(purchase);
}

}

  • PurchasesController.java

@RestController
@RequestMapping("/purchases")
public class PurchaseController {

@Autowired
private PurchaseService purchaseService;

@GetMapping()
public ResponseEntity<List<Purchase>> getAll() {
    return new ResponseEntity<>(purchaseService.getAll(), HttpStatus.OK);
}

@GetMapping("/client/{id}")
public ResponseEntity<List<Purchase>> getByClientId(@PathVariable("id") String clientId) {
    return purchaseService.getByClientId(clientId)
            .map(purchase -> new ResponseEntity<>(purchase, HttpStatus.OK))
            .orElse(new ResponseEntity<>(HttpStatus.NOT_FOUND));
}

@PostMapping("/save")
public ResponseEntity<Purchase> save(@RequestBody Purchase purchase) {
    return new ResponseEntity<>(purchaseService.save(purchase), HttpStatus.CREATED);
}

}

Tengo un error en la Interfaz PurchaseMapper pero no lo encuentro, según yo es el mismo código que el profesor.

El error enviado es:
Purchase toPurchase(Compra compra);
^
1 warning

La Interfaz es:

@Mapper(componentModel = “spring”, uses = {PurchaseItemMapper.class})
public interface PurchaseMapper {

@Mappings({
        @Mapping(source = "idCompra", target = "purchaseId"),
        @Mapping(source = "idCliente", target = "clientId"),
        @Mapping(source = "fecha", target = "date"),
        @Mapping(source = "medioPago", target = "paymentMethod"),
        @Mapping(source = "comentario", target = "comment"),
        @Mapping(source = "estado", target = "state"),
        @Mapping(source = "productos", target = "items"),
})
Purchase toPurchase(Compra compra);
List<Purchase> toPurchases(List<Compra> compras);

@InheritInverseConfiguration
@Mapping(target = "cliente", ignore = true)
Compra toCompra(Purchase purchase);

}