No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Aprende Ingl茅s, Programaci贸n, AI, Ciberseguridad y mucho m谩s.

Antes: $249

Currency
$209
Suscr铆bete

Termina en:

3 D铆as
8 Hrs
50 Min
0 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 33

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锟絥 锟絚ompras_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

Tuve problemas con el save, pero era porque no sabia como meter los datos en Postman, les dejo en Json ojala les sirva
{
鈥渃lienteId鈥: 鈥4546221鈥,
鈥渄ate鈥: 鈥2020-08-10T17:30:00鈥,
鈥減aymentMethod鈥: 鈥淭鈥,
鈥渃omment鈥: 鈥溾,
鈥渟tate鈥: 鈥淧鈥,
鈥渋team鈥: [
{
鈥減roductId鈥: 1,
鈥渜uantity鈥: 10,
鈥渢otal鈥: 3000.0,
鈥渁ctive鈥: true
},
{
鈥減roductId鈥: 24,
鈥渜uantity鈥: 1,
鈥渢otal鈥: 4000.0,
鈥渁ctive鈥: true
},
{
鈥減roductId鈥: 27,
鈥渜uantity鈥: 1,
鈥渢otal鈥: 9000.0,
鈥渁ctive鈥: true
},
{
鈥減roductId鈥: 36,
鈥渜uantity鈥: 1,
鈥渢otal鈥: 40000.0,
鈥渁ctive鈥: true
},
{
鈥減roductId鈥: 49,
鈥渜uantity鈥: 2,
鈥渢otal鈥: 16400.0,
鈥渁ctive鈥: true
}
]
}

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?

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 !!

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;

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

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.

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

驴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]

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

![](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
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 = 鈥渟pring鈥, 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);

}