1 00:00:00,000 --> 00:00:09,320 Vale, entonces, vale, ¿qué es lo que iba a decir yo? 2 00:00:09,460 --> 00:00:16,660 Ah, entonces, ahora mi duda es que efectivamente este count P y D no era el problema 3 00:00:16,660 --> 00:00:20,699 y que count P estaba bien, porque cuentas los objetos en sí. 4 00:00:21,339 --> 00:00:25,179 Lo que pasa es que es verdad que ya parece que todo lo que te dice esta GPT tiene sentido 5 00:00:25,179 --> 00:00:26,059 y no siempre lo tiene. 6 00:00:26,059 --> 00:00:28,620 entonces yo creo que eso 7 00:00:28,620 --> 00:00:30,640 eso no hace falta 8 00:00:30,640 --> 00:00:33,299 porque el propio objeto ya es único 9 00:00:33,299 --> 00:00:35,060 no hace falta su id 10 00:00:35,060 --> 00:00:36,380 el propio objeto ya es único 11 00:00:36,380 --> 00:00:38,579 vale, vamos a ver 12 00:00:38,579 --> 00:00:40,039 si eso tampoco funciona 13 00:00:40,039 --> 00:00:42,600 ah, menos mal, porque ya 14 00:00:42,600 --> 00:00:44,119 me estaba entrando ansiedad 15 00:00:44,119 --> 00:00:51,140 ala, estupendo, cada cliente con su número de pedidos 16 00:00:51,140 --> 00:00:53,000 la idea de la unalia es igual que se llama en la clase 17 00:00:53,000 --> 00:00:54,619 la interfaz 18 00:00:54,619 --> 00:00:56,740 ¿cómo que? 19 00:00:56,939 --> 00:00:58,039 ah, claro, claro 20 00:00:58,039 --> 00:01:00,060 Claro, porque si no 21 00:01:00,060 --> 00:01:02,659 No va a poder hacer la conexión 22 00:01:02,659 --> 00:01:03,500 Correctamente 23 00:01:03,500 --> 00:01:06,620 Vale, entonces pues aquí 24 00:01:06,620 --> 00:01:09,239 Podríamos haberlo ordenado por orden de lo que fuera 25 00:01:09,239 --> 00:01:09,879 Patatín 26 00:01:09,879 --> 00:01:12,599 Lo que sí que ocurre en JPQL 27 00:01:12,599 --> 00:01:15,159 Que eso es curioso 28 00:01:15,159 --> 00:01:16,280 No existe el limit 29 00:01:16,280 --> 00:01:17,939 ¿Recordáis el limit de SQL? 30 00:01:18,640 --> 00:01:20,900 Pues en JPQL creo que no existe 31 00:01:20,900 --> 00:01:22,140 Limit 32 00:01:22,140 --> 00:01:24,840 Con lo cual si tú quieres limitar una consulta de registros 33 00:01:24,840 --> 00:01:26,640 Lo tienes que hacer luego por servicio 34 00:01:26,640 --> 00:01:28,859 este te lo devuelve todo 35 00:01:28,859 --> 00:01:29,980 o de otra manera 36 00:01:29,980 --> 00:01:32,459 o volcado de otra forma 37 00:01:32,459 --> 00:01:38,840 bueno, sí, o construyéndola de otra manera 38 00:01:38,840 --> 00:01:41,180 le pasas un parámetro y cambias aquí la JPQL 39 00:01:41,180 --> 00:01:43,120 o haces algo, no te refieres a eso, ¿a qué te refieres? 40 00:01:43,219 --> 00:01:44,019 en JPQL 41 00:01:44,019 --> 00:01:46,560 algunas consultas te permiten directamente 42 00:01:46,560 --> 00:01:48,599 pasarle un parámetro, igual que le puedes pasar un sort 43 00:01:48,599 --> 00:01:49,780 o un pagination 44 00:01:49,780 --> 00:01:52,400 que te permite hacer el link 45 00:01:52,400 --> 00:01:54,200 ah, bueno, sí 46 00:01:54,200 --> 00:01:56,700 Sí, supongo 47 00:01:56,700 --> 00:01:59,019 Porque a ver, cosas que no estamos usando 48 00:01:59,019 --> 00:02:00,319 Que podríais meteros a usar 49 00:02:00,319 --> 00:02:01,719 Por ejemplo, esta lista 50 00:02:01,719 --> 00:02:04,920 Esta lista podría ser de 200.000 51 00:02:04,920 --> 00:02:06,980 Eso es poco manejable 52 00:02:06,980 --> 00:02:08,680 Entonces podríamos querer 53 00:02:08,680 --> 00:02:10,460 Paginarla, es decir 54 00:02:10,460 --> 00:02:12,000 Que me la devuelva en páginas 55 00:02:12,000 --> 00:02:14,000 Y yo luego recupere las páginas fuera 56 00:02:14,000 --> 00:02:16,259 Pero para eso tenemos que pasarle 57 00:02:16,259 --> 00:02:18,159 Un objeto pageable 58 00:02:18,159 --> 00:02:19,000 ¿Vale? 59 00:02:19,719 --> 00:02:20,759 A mí me encanta el nombre 60 00:02:20,759 --> 00:02:23,139 Ya, es que 61 00:02:23,139 --> 00:02:24,340 No sé cómo llamarlo 62 00:02:24,340 --> 00:02:25,780 Pajeable 63 00:02:25,780 --> 00:02:27,840 No, es que se llama pajeable 64 00:02:27,840 --> 00:02:30,580 Es pajeable, tal cual, se escribe así 65 00:02:30,580 --> 00:02:34,699 Pero es pajeable con G 66 00:02:34,699 --> 00:02:37,000 Pero son igual 67 00:02:37,000 --> 00:02:44,539 Ahora sí que se ha probado la asignatura 68 00:02:44,539 --> 00:02:48,740 Vale, es que es así 69 00:02:48,740 --> 00:02:50,180 Ahora dice que no 70 00:02:50,180 --> 00:02:53,000 Se escribe de esta manera 71 00:02:53,000 --> 00:02:55,699 Bueno, traducción 72 00:02:55,699 --> 00:02:56,319 Vale 73 00:02:56,319 --> 00:02:59,780 Conclusión, hay muchísimas cosas 74 00:02:59,780 --> 00:03:00,620 Que podéis hacer 75 00:03:00,620 --> 00:03:02,900 Paginar los resultados por parámetro 76 00:03:02,900 --> 00:03:04,860 Limitarlos por parámetro 77 00:03:04,860 --> 00:03:05,840 Como dice él 78 00:03:05,840 --> 00:03:08,120 Porque en el límite aquí no puedes 79 00:03:08,120 --> 00:03:10,620 Vale, pero bueno 80 00:03:10,620 --> 00:03:12,460 Esto ya entra dentro de vuestro 81 00:03:12,460 --> 00:03:15,680 Vale 82 00:03:15,680 --> 00:03:18,620 Por último 83 00:03:18,620 --> 00:03:20,500 O casi último 84 00:03:20,500 --> 00:03:22,439 Esto es lo que se llama proyección 85 00:03:22,439 --> 00:03:23,819 Que es una cosa muy sencilla 86 00:03:23,819 --> 00:03:26,719 Porque no admite ningún procesamiento 87 00:03:26,719 --> 00:03:27,479 Es una interfaz 88 00:03:27,479 --> 00:03:29,080 Entonces 89 00:03:29,080 --> 00:03:31,319 Que falta el groupby, ¿dónde? 90 00:03:33,759 --> 00:03:34,560 Si lo he hecho bien 91 00:03:34,560 --> 00:03:35,580 Bueno, a ver 92 00:03:35,580 --> 00:03:39,060 Que ponga groupby id y nombre 93 00:03:39,060 --> 00:03:39,360 Vale 94 00:03:39,360 --> 00:03:43,539 Pues esto está muy bien 95 00:03:43,539 --> 00:03:44,960 Y está muy chulo y todo eso 96 00:03:44,960 --> 00:03:46,819 Pero es una versión muy sencilla 97 00:03:46,819 --> 00:03:47,919 Esto es una interfaz 98 00:03:47,919 --> 00:03:50,659 Que en una interfaz ya sabéis 99 00:03:50,659 --> 00:03:52,419 Que no podemos poner métodos 100 00:03:52,419 --> 00:03:54,300 Sí, podemos poner métodos por default 101 00:03:54,300 --> 00:03:55,219 No sé qué 102 00:03:55,219 --> 00:03:58,699 Pero bueno 103 00:03:58,699 --> 00:03:59,599 Los métodos default 104 00:03:59,599 --> 00:04:01,979 Como que han tenido muy poco éxito en la vida 105 00:04:01,979 --> 00:04:03,560 No sé por qué 106 00:04:03,560 --> 00:04:05,240 Es que claro, rompen un poco 107 00:04:05,240 --> 00:04:07,180 La filosofía de la interfaz 108 00:04:07,180 --> 00:04:09,500 Que es, yo soy un contrato 109 00:04:09,500 --> 00:04:11,020 Eso es la interfaz 110 00:04:11,020 --> 00:04:14,060 Ya, pero es que son peligrosos 111 00:04:14,060 --> 00:04:14,939 ¿Por qué? 112 00:04:15,599 --> 00:04:17,360 Una interfaz es un contrato 113 00:04:17,360 --> 00:04:20,439 que el que me implemente tiene que cumplir. 114 00:04:20,920 --> 00:04:21,560 Eso está claro. 115 00:04:22,040 --> 00:04:23,339 Si tú pones un método default, 116 00:04:24,399 --> 00:04:26,540 estás haciendo parte del trabajo del otro. 117 00:04:27,639 --> 00:04:28,899 Eso puede ser un problema. 118 00:04:29,060 --> 00:04:29,379 ¿Por qué? 119 00:04:29,379 --> 00:04:32,959 Porque los que se incorporan a tu contrato 120 00:04:32,959 --> 00:04:36,019 se pueden incorporar sin hacer el trabajo 121 00:04:36,019 --> 00:04:37,000 y coger tu default. 122 00:04:37,120 --> 00:04:39,379 Y se te puede escapar alguno que no le valga el default. 123 00:04:40,180 --> 00:04:42,740 Entonces, los default tienen cierto peligro por eso. 124 00:04:43,480 --> 00:04:46,399 Bueno, pues entonces, default aparte. 125 00:04:46,399 --> 00:04:48,040 Esto es una interfaz 126 00:04:48,040 --> 00:04:49,939 Una proyección y por tanto 127 00:04:49,939 --> 00:04:51,339 Lo único que vamos a hacer con ella es 128 00:04:51,339 --> 00:04:53,000 Consultar los datos que tiene dentro 129 00:04:53,000 --> 00:04:55,040 Pero no podemos ponerle procesamiento 130 00:04:55,040 --> 00:04:57,300 Para que además me haga cosas con los datos 131 00:04:57,300 --> 00:04:58,339 Para 132 00:04:58,339 --> 00:05:01,399 Yo llamar esos otros métodos 133 00:05:01,399 --> 00:05:02,300 Y que me devuelva 134 00:05:02,300 --> 00:05:05,040 Procesado de este 135 00:05:05,040 --> 00:05:07,120 Es decir, en una proyección 136 00:05:07,120 --> 00:05:09,100 Lo que viene es lo que sale de tu JPQL 137 00:05:09,100 --> 00:05:09,839 Punto pelota 138 00:05:09,839 --> 00:05:12,180 Claro 139 00:05:12,180 --> 00:05:14,540 Pero en el main ya o donde sea 140 00:05:14,540 --> 00:05:16,720 ¿vale? entonces podría ser 141 00:05:16,720 --> 00:05:18,139 que nosotros queramos aquí ofrecer 142 00:05:18,139 --> 00:05:20,579 más métodos para que el resultado 143 00:05:20,579 --> 00:05:22,639 de esa consulta ya directamente pueda 144 00:05:22,639 --> 00:05:24,839 yo sacarle más información y más cositas 145 00:05:24,839 --> 00:05:26,680 entonces eso ya 146 00:05:26,680 --> 00:05:28,500 sí que sería el objeto 147 00:05:28,500 --> 00:05:30,600 DTO de verdad, el objeto puro 148 00:05:30,600 --> 00:05:31,699 y eso ya sí es una clase 149 00:05:31,699 --> 00:05:34,860 por ejemplo, vamos a 150 00:05:34,860 --> 00:05:36,220 hacer aquí un DTO 151 00:05:36,220 --> 00:05:39,959 ¿dónde estamos? aquí 152 00:05:39,959 --> 00:05:47,610 bueno, puede ser una implementación 153 00:05:47,610 --> 00:05:49,670 o no necesariamente 154 00:05:49,670 --> 00:05:51,550 porque no 155 00:05:51,550 --> 00:05:52,649 exista esta proyección 156 00:05:52,649 --> 00:05:55,329 los DTOs se suelen poner directamente 157 00:05:55,329 --> 00:05:57,649 no suelen ser implementaciones 158 00:05:57,649 --> 00:05:58,449 de proyecciones 159 00:05:58,449 --> 00:06:01,610 entonces pues nosotros nos hacemos aquí 160 00:06:01,610 --> 00:06:02,529 nuestra clase 161 00:06:02,529 --> 00:06:07,889 con DTOs 162 00:06:07,889 --> 00:06:09,389 yo creo, sí, porque normalmente 163 00:06:09,389 --> 00:06:11,009 quieres además procesar algo 164 00:06:11,009 --> 00:06:13,709 venga, cliente 165 00:06:13,709 --> 00:06:15,269 en un pedidos DTO 166 00:06:15,269 --> 00:06:18,029 Ale, este ya es una clase 167 00:06:18,029 --> 00:06:19,689 Con lo cual este ya tiene un estado 168 00:06:19,689 --> 00:06:21,769 Tiene su estado, sus propiedades 169 00:06:21,769 --> 00:06:23,689 En este caso 170 00:06:23,689 --> 00:06:25,069 Pues queremos que tenga 171 00:06:25,069 --> 00:06:27,970 Private long 172 00:06:27,970 --> 00:06:28,709 Id 173 00:06:28,709 --> 00:06:33,220 Private 174 00:06:33,220 --> 00:06:35,040 String 175 00:06:35,040 --> 00:06:37,759 Nombre 176 00:06:37,759 --> 00:06:39,660 Y 177 00:06:39,660 --> 00:06:41,360 El número de pedidos 178 00:06:41,360 --> 00:06:45,980 Que era private 179 00:06:45,980 --> 00:06:48,019 Integer num pedidos 180 00:06:48,019 --> 00:06:49,800 Getty set 181 00:06:49,800 --> 00:06:58,209 Bueno, el set si no lo voy a usar 182 00:06:58,209 --> 00:06:59,449 Uno podría no ponerlo 183 00:06:59,449 --> 00:07:01,949 Vale, un constructor 184 00:07:01,949 --> 00:07:04,189 Con parámetros, esto ya es una clase 185 00:07:04,189 --> 00:07:05,990 Normal y corriente como todas las del universo 186 00:07:05,990 --> 00:07:13,660 Vale, y ahora vamos a ponerle 187 00:07:13,660 --> 00:07:15,439 Un método que a lo mejor 188 00:07:15,439 --> 00:07:16,860 Le interesa a nuestro servicio 189 00:07:16,860 --> 00:07:19,319 Pues ver si el cliente ha hecho 190 00:07:19,319 --> 00:07:20,519 Más de 10 pedidos 191 00:07:20,519 --> 00:07:22,379 Porque si ha hecho más de 10 192 00:07:22,379 --> 00:07:25,139 Pues le vamos a hacer un descuento 193 00:07:25,139 --> 00:07:26,339 Por ejemplo 194 00:07:26,339 --> 00:07:29,120 Pues entonces aquí podríamos poner métodos 195 00:07:29,120 --> 00:07:31,279 Para sacar información 196 00:07:31,279 --> 00:07:32,120 De este objeto 197 00:07:32,120 --> 00:07:34,439 Más allá de estas tres propiedades 198 00:07:34,439 --> 00:07:36,560 En una proyección no puedes sacar más información 199 00:07:36,560 --> 00:07:37,660 Que estas tres propiedades 200 00:07:37,660 --> 00:07:40,259 En un DTO puedes sacar la que te dé la gana 201 00:07:40,259 --> 00:07:42,220 Vale, pues por ejemplo 202 00:07:42,220 --> 00:07:43,899 Vamos a sacar la información 203 00:07:43,899 --> 00:07:51,699 Más de 204 00:07:51,699 --> 00:08:01,839 Más de, es que no sé cómo ponerlo 205 00:08:01,839 --> 00:08:04,839 Supera, venga, supera 206 00:08:04,839 --> 00:08:06,480 Pedidos 207 00:08:06,480 --> 00:08:09,420 Supera pedidos y le pasamos un 208 00:08:09,420 --> 00:08:11,259 Numerito 209 00:08:11,259 --> 00:08:16,629 Y ahora este nos va a devolver 210 00:08:16,629 --> 00:08:20,810 Retún num pedidos 211 00:08:20,810 --> 00:08:26,850 Mayor que n 212 00:08:26,850 --> 00:08:28,189 Vale 213 00:08:28,189 --> 00:08:32,519 Bueno, pues esto ya sí es mucho más útil 214 00:08:32,519 --> 00:08:35,379 porque aparte de recogernos la información 215 00:08:35,379 --> 00:08:37,500 podemos pedirle cosas 216 00:08:37,500 --> 00:08:41,179 que agregan, que hacen 217 00:08:41,179 --> 00:08:42,580 procesamiento sobre el estado 218 00:08:42,580 --> 00:08:45,539 este objeto tiene estado, la proyección no tiene 219 00:08:45,539 --> 00:08:45,879 estado 220 00:08:45,879 --> 00:08:51,120 pues venga, ahora 221 00:08:51,120 --> 00:08:53,419 si ahora devolvemos esto 222 00:08:53,419 --> 00:08:54,379 con el DTO 223 00:08:54,379 --> 00:08:57,100 en nuestro repository 224 00:08:57,100 --> 00:09:07,580 client 225 00:09:07,580 --> 00:09:09,759 en un pedidos 226 00:09:09,759 --> 00:09:25,960 vale 227 00:09:25,960 --> 00:09:27,659 Pues vamos a 228 00:09:27,659 --> 00:09:30,019 Ejecutarlo así, sin más 229 00:09:30,019 --> 00:09:31,440 A ver qué pasa 230 00:09:31,440 --> 00:09:33,980 Vamos a hacer el servicio, perdón 231 00:09:33,980 --> 00:09:38,759 Cliente, service 232 00:09:38,759 --> 00:10:03,940 Vale, ya tenemos el servicio 233 00:10:03,940 --> 00:10:05,919 Que ya más otro método, que me devuelve la lista de pedidos 234 00:10:05,919 --> 00:10:06,879 Y ahora yo ya en mi main 235 00:10:06,879 --> 00:10:09,320 Ese DTO me permite hacer más cosas 236 00:10:09,320 --> 00:10:11,539 Ese DTO 237 00:10:11,539 --> 00:10:18,860 Este DTO ya nos permite 238 00:10:18,860 --> 00:10:20,399 Hacer un poquito más de cosas 239 00:10:20,399 --> 00:10:22,639 Cliente en un pedido 240 00:10:22,639 --> 00:10:24,840 DTO, pues ahora a este ya sí 241 00:10:24,840 --> 00:10:26,000 Que le podríamos hacer 242 00:10:26,000 --> 00:10:34,539 Por ejemplo, vamos a filtrar solo los guays 243 00:10:34,539 --> 00:10:36,120 Por ejemplo 244 00:10:36,120 --> 00:10:39,200 Vamos a filtrar los guays 245 00:10:39,200 --> 00:10:46,240 Claro, entonces pondríamos un filter, lógicamente 246 00:10:46,240 --> 00:10:49,159 Pondríamos un filter 247 00:10:49,159 --> 00:10:50,899 ¿Y qué filtraríamos? 248 00:10:50,899 --> 00:10:58,899 Filtraríamos cada elemento en el cual X. supera pedidos de que... 249 00:11:00,299 --> 00:11:10,740 Ya sabes que yo voy incremental. 250 00:11:13,159 --> 00:11:17,159 El DTO que está... ¿Dónde está el DTO? 251 00:11:17,580 --> 00:11:20,820 Aquí estará. 252 00:11:26,929 --> 00:11:27,509 ¿Correcto? 253 00:11:29,889 --> 00:11:32,009 Pues ahora mismo 254 00:11:32,009 --> 00:11:34,570 Estoy contándoles el iterador a los de primero 255 00:11:34,570 --> 00:11:37,470 Pero ¿qué hago? 256 00:11:38,169 --> 00:11:40,210 ¿Les enseño streams directamente? 257 00:11:40,970 --> 00:11:41,929 Mire que hay un caso 258 00:11:41,929 --> 00:11:47,370 Que hay un caso 259 00:11:47,370 --> 00:11:49,730 El caso es que dependa del anterior 260 00:11:49,730 --> 00:11:52,450 El borrar justo 261 00:11:52,450 --> 00:11:53,990 Dependa del anterior 262 00:11:53,990 --> 00:11:58,289 A ver, que me estoy desconcertando 263 00:11:58,289 --> 00:11:59,730 Que baje hasta donde 264 00:11:59,730 --> 00:12:03,950 Vale, pues venga 265 00:12:03,950 --> 00:12:14,149 Vale 266 00:12:14,149 --> 00:12:32,090 Sí, ¿verdad? 267 00:12:32,169 --> 00:12:34,470 Me estaba dando un poco de angustia poner un escáner 268 00:12:34,470 --> 00:12:35,210 Porque es que 269 00:12:35,210 --> 00:12:47,110 Vale, ya nos 270 00:12:47,110 --> 00:12:51,960 Ala, y ahora ya 271 00:12:51,960 --> 00:12:57,090 Vale 272 00:12:57,090 --> 00:12:59,269 Vale, pues y ahora ya 273 00:12:59,269 --> 00:13:00,870 Esta nueva lista 274 00:13:00,870 --> 00:13:01,870 Service. 275 00:13:03,529 --> 00:13:05,970 De cada una de ellas 276 00:13:05,970 --> 00:13:06,909 Vamos a 277 00:13:06,909 --> 00:13:09,350 Mostrar solamente 278 00:13:09,350 --> 00:13:10,629 El nombre de los guays 279 00:13:10,629 --> 00:13:12,429 Con lo cual 280 00:13:12,429 --> 00:13:14,850 No vamos a hacer un system.out.println 281 00:13:14,850 --> 00:13:15,830 Sino x. 282 00:13:19,830 --> 00:13:20,309 X. 283 00:13:21,169 --> 00:13:21,730 Nombre 284 00:13:21,730 --> 00:13:24,830 Pues esto nos va a mostrar 285 00:13:24,830 --> 00:13:25,690 Un segundito 286 00:13:25,690 --> 00:13:28,549 Nos va a mostrar los nombres 287 00:13:28,549 --> 00:13:30,570 de todos aquellos que hayan pedido 288 00:13:30,570 --> 00:13:32,750 más de n pedidos 289 00:13:32,750 --> 00:13:34,529 y me sobran muchos puntos y comas 290 00:13:34,529 --> 00:13:38,549 me sobráis 291 00:13:38,549 --> 00:13:39,370 muchos en general 292 00:13:39,370 --> 00:13:43,129 vale 293 00:13:43,129 --> 00:13:46,210 ahora ya si 294 00:13:46,210 --> 00:13:48,710 me va a mostrar los nombres de todos 295 00:13:48,710 --> 00:13:49,889 los que hayan pedido más de esto 296 00:13:49,889 --> 00:13:52,289 y esto, hombre 297 00:13:52,289 --> 00:13:54,970 pues con un DTO magnífico 298 00:13:54,970 --> 00:13:56,549 sin un DTO tengo que volcar 299 00:13:56,549 --> 00:13:57,629 el cliente entero 300 00:13:57,629 --> 00:14:00,190 de cada cliente 301 00:14:00,190 --> 00:14:01,269 ahora ya contar 302 00:14:01,269 --> 00:14:03,210 en su propiedad pedidos 303 00:14:03,210 --> 00:14:06,090 que fácil, pues que necesidad 304 00:14:06,090 --> 00:14:07,950 si yo me hago un DTO y ya lo tengo ahí todo 305 00:14:07,950 --> 00:14:10,009 claro, nosotros aquí estamos en nuestro 306 00:14:10,009 --> 00:14:11,289 main que parece que es nuestro teléfono 307 00:14:11,289 --> 00:14:13,429 pero tú estás en un método 308 00:14:13,429 --> 00:14:16,149 de un API REST o algo 309 00:14:16,149 --> 00:14:17,629 y no quieres ponerte ahí a hacer mamonadas 310 00:14:17,629 --> 00:14:19,990 o no quieres hacer un servicio que tenga muchas mierdas 311 00:14:19,990 --> 00:14:22,129 pues un DTO, mira que bien te esconde 312 00:14:22,129 --> 00:14:22,730 todo esto 313 00:14:22,730 --> 00:14:25,590 también estáis convencidos, ¿verdad? 314 00:14:25,590 --> 00:14:28,789 vale, vamos a ver 315 00:14:28,789 --> 00:14:30,929 si esto funciona, le vamos a dar 316 00:14:30,929 --> 00:14:32,789 uno, porque es que no tengo clientes 317 00:14:32,789 --> 00:14:33,850 que hayan pedido más de 318 00:14:33,850 --> 00:14:37,889 dame número 319 00:14:37,889 --> 00:14:41,009 ¿qué clientes han pedido más de un 320 00:14:41,009 --> 00:14:41,549 pedido? 321 00:14:42,509 --> 00:14:44,649 toma ya, esto sí que es bueno 322 00:14:44,649 --> 00:14:46,970 ah, pero este es a propósito 323 00:14:46,970 --> 00:14:49,269 este ha sido a propósito 324 00:14:49,269 --> 00:14:51,450 no puedo 325 00:14:51,450 --> 00:14:52,850 no puedo 326 00:14:52,850 --> 00:14:59,970 sí, no, este era esperable 327 00:14:59,970 --> 00:15:02,230 creo que es este, o sea, he puesto uno a propósito 328 00:15:02,230 --> 00:15:03,549 que iba a petar, que creo que es este 329 00:15:03,549 --> 00:15:04,509 vale 330 00:15:04,509 --> 00:15:08,289 pues, y el problema de este 331 00:15:08,289 --> 00:15:10,450 es que no se entiende 332 00:15:10,450 --> 00:15:11,190 nada de lo que dice 333 00:15:11,190 --> 00:15:14,610 no tengo un convertidor capaz de convertir 334 00:15:14,610 --> 00:15:15,350 un tipo 335 00:15:15,350 --> 00:15:17,889 tipo, astra, tupla 336 00:15:17,889 --> 00:15:20,429 tupla, tipo, eso ya como que 337 00:15:20,429 --> 00:15:21,250 nos da pistas 338 00:15:21,250 --> 00:15:24,429 no soy capaz de convertir una tupla 339 00:15:24,429 --> 00:15:25,350 a un tipo 340 00:15:25,350 --> 00:15:28,490 ¿dónde hay una tupla aquí? ¿de qué tupla me hablas? 341 00:15:29,230 --> 00:15:30,389 esto es una tupla 342 00:15:30,389 --> 00:15:31,629 o sea, una tupla es 343 00:15:31,629 --> 00:15:33,250 un pack de datos 344 00:15:33,250 --> 00:15:36,190 no soy capaz de convertir a tipo 345 00:15:36,190 --> 00:15:38,289 claro, porque esto 346 00:15:38,289 --> 00:15:40,610 es un DTO y tiene su propio constructor 347 00:15:40,610 --> 00:15:42,169 entonces 348 00:15:42,169 --> 00:15:43,389 no es como la interfaz 349 00:15:43,389 --> 00:15:46,370 que la interfaz no tiene constructor, no tiene nada 350 00:15:46,370 --> 00:15:48,450 y el mapeo 351 00:15:48,450 --> 00:15:49,830 aquí es rígido y estricto 352 00:15:49,830 --> 00:15:55,529 Los campos que pongas ahí van a los get de la interfaz. 353 00:15:56,470 --> 00:15:57,870 Aquí, esto es una clase. 354 00:15:57,990 --> 00:15:59,389 Tú puedes tener varios constructores. 355 00:15:59,509 --> 00:16:02,649 Pues, entonces, desde aquí vamos a invocar al constructor 356 00:16:02,649 --> 00:16:03,309 directamente. 357 00:16:04,409 --> 00:16:05,269 Así a lo bestia. 358 00:16:06,450 --> 00:16:06,830 New. 359 00:16:08,789 --> 00:16:10,350 Eso mismo digo yo. 360 00:16:11,870 --> 00:16:18,669 New cliente resumen. 361 00:16:19,009 --> 00:16:20,269 No era resumen. 362 00:16:20,269 --> 00:16:22,169 Era numpedidos 363 00:16:22,169 --> 00:16:24,970 numpedidos 364 00:16:24,970 --> 00:16:25,750 dto 365 00:16:25,750 --> 00:16:28,750 Vale, entonces no estoy 366 00:16:28,750 --> 00:16:30,950 muy segura de que la invocación la pueda 367 00:16:30,950 --> 00:16:32,370 hacer así, pero 368 00:16:32,370 --> 00:16:35,750 no suena bonito 369 00:16:35,750 --> 00:16:36,330 ya, pero 370 00:16:36,330 --> 00:16:38,309 las cosas que no suenan bonitas 371 00:16:38,309 --> 00:16:40,049 te dan muchas sorpresas 372 00:16:40,049 --> 00:16:42,809 No, no, no, porque entonces 373 00:16:42,809 --> 00:16:43,990 cerrarías la jpql 374 00:16:43,990 --> 00:16:46,769 Vale, entonces, eso sí, este 375 00:16:46,769 --> 00:16:47,750 constructor existe 376 00:16:47,750 --> 00:16:50,370 existe un constructor por id en nombre 377 00:16:50,370 --> 00:16:51,750 porque si no existe la hemos liado 378 00:16:51,750 --> 00:16:53,789 si existe 379 00:16:53,789 --> 00:16:55,110 y si no lo hago 380 00:16:55,110 --> 00:16:57,190 por id en nombre y no en pedidos 381 00:16:57,190 --> 00:16:58,629 vale, si que existe 382 00:16:58,629 --> 00:17:00,750 entonces ahora ya si sabe 383 00:17:00,750 --> 00:17:03,490 transformar, castear 384 00:17:03,490 --> 00:17:04,670 como os gusta a vosotros 385 00:17:04,670 --> 00:17:06,769 ya sabe transformar una tupla 386 00:17:06,769 --> 00:17:09,289 en un objeto cliente 387 00:17:09,289 --> 00:17:11,029 ya si lo sabe transformar, pero le estamos diciendo como 388 00:17:11,029 --> 00:17:13,869 le estamos diciendo que sea instanciando el constructor 389 00:17:13,869 --> 00:17:15,829 ya si sabría 390 00:17:15,829 --> 00:17:17,769 Mapear esa tupla si es que he escrito eso bien 391 00:17:17,769 --> 00:17:19,369 Que está por ver 392 00:17:19,369 --> 00:17:28,509 Toma ya 393 00:17:28,509 --> 00:17:30,269 Vale, Semantic 394 00:17:30,269 --> 00:17:32,710 Semantic, bueno, Semantic 395 00:17:32,710 --> 00:17:37,769 Sí, es que lo he hecho a lo bestia 396 00:17:37,769 --> 00:17:40,150 Lo he hecho a lo bestia porque no quería mirar la chuleta 397 00:17:40,150 --> 00:17:40,690 Quería 398 00:17:40,690 --> 00:17:42,490 No me acuerdo de 399 00:17:42,490 --> 00:17:44,650 La mitad de las cosas 400 00:17:44,650 --> 00:17:47,549 Entonces, pero como vosotros 401 00:17:47,549 --> 00:17:49,349 No tenéis mi chuleta, pues vosotros 402 00:17:49,349 --> 00:17:50,730 Lógicamente se lo comentáis a HGPT 403 00:17:50,730 --> 00:17:52,150 Vamos a ponérselo 404 00:17:52,150 --> 00:17:54,589 a ver si esta vez 405 00:17:54,589 --> 00:17:56,769 pero vamos a escucharle con más criterio 406 00:17:56,769 --> 00:17:58,730 porque antes nos hemos creído lo del PID 407 00:17:58,730 --> 00:18:00,849 así sin ningún criterio y nos estamos maleducando 408 00:18:00,849 --> 00:18:02,910 entonces vamos a hacerle 409 00:18:02,910 --> 00:18:04,910 esta consulta, a demostrarle esto 410 00:18:04,910 --> 00:18:06,210 a ver que me saca, a ver si 411 00:18:06,210 --> 00:18:08,730 donde está 412 00:18:08,730 --> 00:18:12,759 que he puesto yo mal aquí en esta 413 00:18:12,759 --> 00:18:13,759 sintaxis 414 00:18:13,759 --> 00:18:16,680 a ver 415 00:18:16,680 --> 00:18:20,230 nombre y nom pedidos 416 00:18:20,230 --> 00:18:21,970 vamos a ver donde estás, aquí 417 00:18:21,970 --> 00:18:32,119 que hay 418 00:18:32,119 --> 00:18:34,720 mal 419 00:18:34,720 --> 00:18:35,579 aquí 420 00:18:35,579 --> 00:18:42,910 dos puntos, está mal en dos sitios 421 00:18:42,910 --> 00:18:44,970 que count p no es válido, pero que 422 00:18:44,970 --> 00:18:46,490 sí es válido, que esta no es 423 00:18:46,490 --> 00:18:48,109 esta no es, vale 424 00:18:48,109 --> 00:18:51,069 as no se usa dentro de un new, ah, vale 425 00:18:51,069 --> 00:18:52,549 eso ya sí que era muy raro 426 00:18:52,549 --> 00:18:54,869 vale, con lo cual 427 00:18:54,869 --> 00:18:55,529 e 428 00:18:55,529 --> 00:18:57,589 c y de nombre 429 00:18:57,589 --> 00:19:00,329 p y d, vale 430 00:19:00,329 --> 00:19:02,789 y ahora 431 00:19:02,789 --> 00:19:04,670 entonces, si yo no pongo el as 432 00:19:04,670 --> 00:19:07,630 él estos datos, como los inyecta 433 00:19:07,630 --> 00:19:09,670 por constructor, ya el get 434 00:19:09,670 --> 00:19:11,309 sí que va a funcionar 435 00:19:11,309 --> 00:19:12,630 porque el get los recupera 436 00:19:12,630 --> 00:19:14,670 del estado 437 00:19:14,670 --> 00:19:16,250 que ya se ha inyectado en el este 438 00:19:16,250 --> 00:19:19,049 vale, pues de tu primera 439 00:19:19,049 --> 00:19:21,349 sugerencia que countP no es válido 440 00:19:21,349 --> 00:19:23,609 pasamos, pero no pasamos de la segunda 441 00:19:23,609 --> 00:19:26,000 ¿vale? 442 00:19:26,339 --> 00:19:28,039 sí, efectivamente, yo según escribía el as 443 00:19:28,039 --> 00:19:30,059 decía, a mí no me suena nunca haber ejido tanto 444 00:19:30,059 --> 00:19:35,150 vale, genial 445 00:19:35,150 --> 00:19:38,170 vamos a ver así 446 00:19:38,170 --> 00:19:42,829 ¿ha petado? joe, qué suerte 447 00:19:42,829 --> 00:19:43,589 Vamos a seguir 448 00:19:43,589 --> 00:19:49,900 A ver 449 00:19:49,900 --> 00:19:52,180 Apetado 450 00:19:52,180 --> 00:20:03,750 Cliente en un pedidos 451 00:20:03,750 --> 00:20:04,369 DTO 452 00:20:04,369 --> 00:20:06,970 Cliente en un pedidos DTO 453 00:20:06,970 --> 00:20:09,009 No la puedo resolver 454 00:20:09,009 --> 00:20:11,589 Cliente en un pedidos 455 00:20:11,589 --> 00:20:12,589 La he llamado bien, ¿no? 456 00:20:13,410 --> 00:20:14,809 Es eso todo lo que dice 457 00:20:14,809 --> 00:20:15,789 Vamos a pararle 458 00:20:15,789 --> 00:20:19,049 Efectivamente 459 00:20:19,049 --> 00:20:20,549 Estábamos con que 460 00:20:20,549 --> 00:20:23,190 Este nombre de clase no es el nombre real 461 00:20:23,190 --> 00:20:24,230 Dentro de una string 462 00:20:24,230 --> 00:20:26,150 Esto no significa nada 463 00:20:26,150 --> 00:20:32,650 Con lo cual con .dam2.dto 464 00:20:32,650 --> 00:20:34,670 Así se llama nuestro paquete 465 00:20:34,670 --> 00:20:37,970 Y ahora ya por vuestras caras de satisfacción 466 00:20:37,970 --> 00:20:39,650 Supongo que lo habéis probado y que ha funcionado 467 00:20:39,650 --> 00:20:41,329 ¿A poco? 468 00:20:41,930 --> 00:20:43,829 Me parece que hace Iberrate 469 00:20:43,829 --> 00:20:44,809 A ver, venga 470 00:20:44,809 --> 00:20:48,190 Porque si nos falla 471 00:20:48,190 --> 00:20:50,089 Así que tenemos que resolverlo sin chagp 472 00:20:50,089 --> 00:20:52,109 Dame número 1 473 00:20:52,109 --> 00:20:54,289 Toma ya, venga 474 00:20:54,289 --> 00:20:56,789 Ilegal exception 475 00:20:56,789 --> 00:20:58,269 Or Spring Framework DAO 476 00:20:58,269 --> 00:21:00,349 Invalid data access type 477 00:21:00,349 --> 00:21:02,130 No puedo instanciar 478 00:21:02,130 --> 00:21:03,109 ¿No tiene constructor? 479 00:21:04,069 --> 00:21:04,869 Porque es long 480 00:21:04,869 --> 00:21:08,750 Ah, vale, porque él usa long siempre por defecto 481 00:21:08,750 --> 00:21:10,509 Vale, entonces 482 00:21:10,509 --> 00:21:12,369 Venga, voy a cambiar el 483 00:21:12,369 --> 00:21:13,269 Bueno, pues esto 484 00:21:13,269 --> 00:21:16,250 Somos autónomos afortunadamente 485 00:21:16,250 --> 00:21:18,289 Para algunas cosas todavía somos autónomos 486 00:21:18,289 --> 00:21:20,589 Sí, hombre 487 00:21:20,589 --> 00:21:21,849 Hay cosas que 488 00:21:21,849 --> 00:21:23,930 Sabemos resolver rápidamente 489 00:21:23,930 --> 00:21:26,309 Venga, pues entonces esto me permite 490 00:21:26,309 --> 00:21:27,470 Cambiar mi constructor 491 00:21:27,470 --> 00:21:30,710 Lo que pasa es que mira que es exquisito 492 00:21:30,710 --> 00:21:32,490 Porque anda que no podría hacer un app 493 00:21:32,490 --> 00:21:34,490 Casting de integral 494 00:21:34,490 --> 00:21:36,630 A long, entiendo que al contrario no 495 00:21:36,630 --> 00:21:40,450 Seguro 496 00:21:40,450 --> 00:21:44,480 Venga 497 00:21:44,480 --> 00:21:46,500 Bueno, pues sois 498 00:21:46,500 --> 00:21:48,240 Conscientes de que provocando 499 00:21:48,240 --> 00:21:50,400 todos estos errores y resolviendo 500 00:21:50,400 --> 00:21:52,299 todos estos errores, aprendemos mucho más 501 00:21:52,299 --> 00:21:54,200 que si hubiéramos acertado de buenas a primeras. 502 00:21:56,299 --> 00:21:57,539 Sí o no. 503 00:21:58,359 --> 00:21:59,640 Claro, a mí me parece 504 00:21:59,640 --> 00:22:02,440 mucho mejor método de aprender las cosas. 505 00:22:03,220 --> 00:22:04,259 Ponerlas así, un poco 506 00:22:04,259 --> 00:22:06,019 al azar, a ver qué pasa, arreglo 507 00:22:06,019 --> 00:22:08,039 lo que ha ocurrido, que de buenas a primeras, 508 00:22:08,180 --> 00:22:09,940 es decir, esto se hace así, funciona, 509 00:22:10,079 --> 00:22:12,059 nos vamos a casa. Pues es un problema. 510 00:22:13,119 --> 00:22:13,380 Venga. 511 00:22:13,380 --> 00:22:16,259 A ver si hay suerte 512 00:22:16,259 --> 00:22:17,819 y nos siguen pasando cosas. 513 00:22:18,240 --> 00:22:27,200 Dame número, uno 514 00:22:27,200 --> 00:22:29,740 Ya, por fin 515 00:22:29,740 --> 00:22:32,740 Después de muchos errores que nunca jamás se nos van a olvidar 516 00:22:32,740 --> 00:22:33,720 Nunca, ya 517 00:22:33,720 --> 00:22:35,759 No se ha funcionado 518 00:22:35,759 --> 00:22:38,680 Vale, estos son los clientes con más de 519 00:22:38,680 --> 00:22:39,279 Un pedido 520 00:22:39,279 --> 00:22:41,259 ¿Vale? 521 00:22:45,380 --> 00:22:47,319 Bueno, ¿todo el mundo satisfecho? 522 00:22:49,799 --> 00:22:50,460 ¿Que no? 523 00:22:53,660 --> 00:22:56,099 ¿Te falla? Vale, pues ilústranos 524 00:22:56,099 --> 00:22:57,940 ¿con qué te falla para que