1 00:00:00,000 --> 00:00:02,080 no pasa nada 2 00:00:02,080 --> 00:00:05,000 y al final se trata de jugar con los objetos 3 00:00:05,000 --> 00:00:06,639 acceder a las propiedades 4 00:00:06,639 --> 00:00:08,880 cambiarlas y ya está 5 00:00:08,880 --> 00:00:10,539 y tener en cuenta en mente 6 00:00:10,539 --> 00:00:12,099 las cuatro cosas básicas 7 00:00:12,099 --> 00:00:14,160 el lazy, el cascade 8 00:00:14,160 --> 00:00:20,859 el actualizar siempre por propietario 9 00:00:20,859 --> 00:00:22,339 teniendo esas cuatro cosas básicas 10 00:00:22,339 --> 00:00:23,940 luego se trata de navegar y todo eso 11 00:00:23,940 --> 00:00:26,420 pero aún así este código 12 00:00:26,420 --> 00:00:28,100 es un código horrible, o sea, tener que haber 13 00:00:28,100 --> 00:00:30,359 cogido yo la colección, haber sacado la colección 14 00:00:30,359 --> 00:00:32,399 haber borrado, es un poco horrible 15 00:00:32,399 --> 00:00:34,240 ¿vale? claro 16 00:00:34,240 --> 00:00:35,439 porque hemos 17 00:00:35,439 --> 00:00:38,140 el que esto haya tenido que ser 18 00:00:38,140 --> 00:00:40,240 tan feo para hacerlo, bueno habría sido 19 00:00:40,240 --> 00:00:41,740 más bonito con una JPQL 20 00:00:41,740 --> 00:00:43,520 me hago yo un delete from 21 00:00:43,520 --> 00:00:45,659 jugador videojuego y ya está 22 00:00:45,659 --> 00:00:48,259 ¿vale? hubiera sido más bonito con una JPQL 23 00:00:48,259 --> 00:00:49,880 pero bueno, hacer JPQL 24 00:00:49,880 --> 00:00:52,159 entonces el que esto al final 25 00:00:52,159 --> 00:00:53,520 nos haya complicado tanto la vida 26 00:00:53,520 --> 00:00:55,820 para borrar una única 27 00:00:55,820 --> 00:00:58,159 único objeto, que es lo único que he querido 28 00:00:58,159 --> 00:01:00,280 borrar un objeto, pues para borrar un objeto 29 00:01:00,280 --> 00:01:01,780 hemos tenido que hacer aquí 30 00:01:01,780 --> 00:01:02,740 la leche 31 00:01:02,740 --> 00:01:05,640 pues esto ha sido 32 00:01:05,640 --> 00:01:08,140 porque ese objeto no lo podíamos sacar 33 00:01:08,140 --> 00:01:08,700 por clave 34 00:01:08,700 --> 00:01:11,719 porque la clave era compuesta 35 00:01:11,719 --> 00:01:13,099 y el find 36 00:01:13,099 --> 00:01:16,340 necesita un único elemento 37 00:01:16,340 --> 00:01:18,180 lo ideal habría sido 38 00:01:18,180 --> 00:01:19,819 que pudiéramos haber hecho un find 39 00:01:19,819 --> 00:01:21,859 de jugador videojuego por su clave 40 00:01:21,859 --> 00:01:24,260 y no podemos, porque el find 41 00:01:24,260 --> 00:01:27,420 Tiene solamente un campo para poner la clave 42 00:01:27,420 --> 00:01:29,739 Y aquí tenemos dos 43 00:01:29,739 --> 00:01:31,560 Entonces hemos tenido que ir 44 00:01:31,560 --> 00:01:33,299 A través de jugador de videojuego 45 00:01:33,299 --> 00:01:34,079 Que es un rollo 46 00:01:34,079 --> 00:01:36,840 Bueno, pues lo natural sería 47 00:01:36,840 --> 00:01:38,379 Poder mapear esto 48 00:01:38,379 --> 00:01:40,980 Con un único objeto clave 49 00:01:40,980 --> 00:01:43,019 Pues vamos a inventárnoslo 50 00:01:43,019 --> 00:01:45,379 Que es la forma normal de hacer esto 51 00:01:45,379 --> 00:01:47,200 Entonces, para no enguarrar esto 52 00:01:47,200 --> 00:01:49,099 Voy a renombrar este como 53 00:01:49,099 --> 00:01:49,540 Old 54 00:01:49,540 --> 00:01:51,780 Jugador videojuego 55 00:01:51,780 --> 00:01:54,780 Claro, un objeto clave 56 00:01:54,780 --> 00:01:56,140 Que contenga los otros dos 57 00:01:56,140 --> 00:01:57,920 Pues a este lo voy a 58 00:01:57,920 --> 00:02:01,980 Copiar con versión all 59 00:02:01,980 --> 00:02:03,400 Y lo retoco 60 00:02:03,400 --> 00:02:06,980 Venga, paste 61 00:02:06,980 --> 00:02:11,080 Bueno, feo 62 00:02:11,080 --> 00:02:12,280 Que seguro que si pongo feo 63 00:02:12,280 --> 00:02:13,979 Entendéis mejor a qué me refiero 64 00:02:13,979 --> 00:02:24,919 Feo porque tiene dos claves 65 00:02:24,919 --> 00:02:27,460 Esta y esta que no pasa nada 66 00:02:27,460 --> 00:02:28,159 Tiramos así 67 00:02:28,159 --> 00:02:30,759 Vale, cuando yo digo no pasa nada 68 00:02:30,759 --> 00:02:32,419 En general, que lo digo muchas veces 69 00:02:32,419 --> 00:02:33,699 No es que no pase nada 70 00:02:33,699 --> 00:02:36,099 Siempre acaban pasando cosas 71 00:02:36,099 --> 00:02:37,099 Ay, por Dios 72 00:02:37,099 --> 00:02:39,300 Porque es feo, bache 73 00:02:39,300 --> 00:02:42,740 Porque ya hemos perdido el control 74 00:02:42,740 --> 00:02:44,520 Desde el momento en que es el entity manager 75 00:02:44,520 --> 00:02:46,319 El que maneja los objetos, los marca 76 00:02:46,319 --> 00:02:48,500 Decide cuando sincroniza con la base de datos 77 00:02:48,500 --> 00:02:49,240 Recupera 78 00:02:49,240 --> 00:02:52,340 Ahí ya él se hace sus cachés de objetos 79 00:02:52,340 --> 00:02:53,740 Coge uno, coge el otro 80 00:02:53,740 --> 00:02:56,939 Pues hay veces que nuestra arquitectura 81 00:02:56,939 --> 00:02:58,900 las anotaciones y cosas funcionan, pero 82 00:02:58,900 --> 00:03:01,020 hay veces que si ya estamos haciendo servicios 83 00:03:01,020 --> 00:03:03,240 muy complicados, pues 84 00:03:03,240 --> 00:03:04,819 podemos tener unos efectos secundarios muy 85 00:03:04,819 --> 00:03:06,800 extraños. Y para arreglarlos 86 00:03:06,800 --> 00:03:08,819 tenemos a lo mejor que cambiar el diseño, 87 00:03:08,939 --> 00:03:10,979 cambiar no sé qué, pero es imposible contemplar 88 00:03:10,979 --> 00:03:12,860 todas esas cosas. Bueno, 89 00:03:12,939 --> 00:03:14,939 pues en este caso, esto de 90 00:03:14,939 --> 00:03:16,639 aquí, esto claro que funciona, 91 00:03:17,259 --> 00:03:18,900 funciona en la mayoría 92 00:03:18,900 --> 00:03:20,960 de las situaciones, pero es una forma 93 00:03:20,960 --> 00:03:22,900 de anotar la clave fea. Primero por lo que os he 94 00:03:22,900 --> 00:03:24,780 dicho, porque nos complica el 95 00:03:24,780 --> 00:03:26,800 sacar un objeto jugador videojuego, nos lo 96 00:03:26,800 --> 00:03:28,500 complica, porque el find no aplica. 97 00:03:29,120 --> 00:03:30,840 Tenemos que tirarlo de los otros 98 00:03:30,840 --> 00:03:32,439 y meternos en la colección. Menudo rollo. 99 00:03:33,180 --> 00:03:34,680 Y luego, pues, 100 00:03:34,819 --> 00:03:36,080 porque al ser dos objetos, 101 00:03:36,639 --> 00:03:38,699 el entity manager puede llegar 102 00:03:38,699 --> 00:03:40,840 a un momento en que colapse y haga cosas extrañas 103 00:03:40,840 --> 00:03:42,080 y los servicios son complicados. 104 00:03:42,860 --> 00:03:44,759 Luego, vamos a 105 00:03:44,759 --> 00:03:45,400 hacerlo bonito. 106 00:03:46,800 --> 00:03:47,919 Me voy ya a este. 107 00:03:48,840 --> 00:03:50,659 Esto de que las dos sean 108 00:03:50,659 --> 00:03:52,460 claves, no. Esto es muy feo. 109 00:03:52,659 --> 00:03:53,719 Una única clave. 110 00:03:54,460 --> 00:03:55,860 Y así puedo hacer el find. 111 00:03:56,800 --> 00:04:23,720 Vale, pues esa clave, como tiene que tener dos cosas dentro, no tiene solamente un long, un string, tiene que tener dos, tiene que ser un objeto, no hay tutía, pues este objeto de qué clase va a ser, pues jugador, videojuego, id, esta es la clase, jugador, videojuego, id, vale 112 00:04:23,720 --> 00:04:25,399 Y esta ya si es 113 00:04:25,399 --> 00:04:27,060 La clave 114 00:04:27,060 --> 00:04:28,300 ¿Vale? 115 00:04:29,319 --> 00:04:30,639 Esta si va a ser la clave 116 00:04:30,639 --> 00:04:33,920 Vale, pero tenemos que hacer esta clase 117 00:04:33,920 --> 00:04:36,199 Tenemos que hacer esta clase 118 00:04:36,199 --> 00:04:37,860 Jugador, videojuego, id 119 00:04:37,860 --> 00:04:43,819 Vale 120 00:04:43,819 --> 00:04:45,639 Esto no es una entidad 121 00:04:45,639 --> 00:04:47,980 Entonces no tiene sentido que lo anote con entity 122 00:04:47,980 --> 00:04:50,240 Porque esto no es una tabla de la base de datos 123 00:04:50,240 --> 00:04:51,800 Esto no lo puedo anotar con entity 124 00:04:51,800 --> 00:04:52,399 ¿Vale? 125 00:04:53,019 --> 00:04:56,500 Esto que es una clase que se corresponde a una clave 126 00:04:56,500 --> 00:04:57,879 Que está 127 00:04:57,879 --> 00:04:59,639 metida, introducida 128 00:04:59,639 --> 00:05:00,620 dentro de esto 129 00:05:00,620 --> 00:05:03,939 entonces, ¿cómo se anota esta clase para decirle 130 00:05:03,939 --> 00:05:05,620 a JPA que esto es una clave 131 00:05:05,620 --> 00:05:07,120 que está metida dentro de otra cosa? 132 00:05:08,439 --> 00:05:09,819 pues se anota con esta 133 00:05:09,819 --> 00:05:10,519 anotación 134 00:05:10,519 --> 00:05:15,579 embedable 135 00:05:15,579 --> 00:05:17,879 pero con dos des juraría 136 00:05:17,879 --> 00:05:19,360 si no, lo miro 137 00:05:19,360 --> 00:05:21,720 vale, así se anota 138 00:05:21,720 --> 00:05:25,339 vale, esta es una clave 139 00:05:25,339 --> 00:05:26,339 que está embebida 140 00:05:26,339 --> 00:05:28,079 es una clase 141 00:05:28,079 --> 00:05:29,680 que está 142 00:05:29,680 --> 00:05:32,240 embebida dentro de esta otra 143 00:05:32,240 --> 00:05:33,300 aquí 144 00:05:33,300 --> 00:05:38,399 ¿qué significa 145 00:05:38,399 --> 00:05:38,899 embebida? 146 00:05:39,399 --> 00:05:40,819 en castellano 147 00:05:40,819 --> 00:05:44,480 embebido en castellano 148 00:05:44,480 --> 00:05:46,480 no es estar como insertado 149 00:05:48,860 --> 00:05:50,579 hay que hacer una carrera que tiene ese nombre 150 00:05:50,579 --> 00:05:53,100 ¿cómo va a dar una carrera que se llama embebida? 151 00:05:53,180 --> 00:05:54,819 ingeniería de servicios embebidos 152 00:05:54,819 --> 00:05:55,319 o algo así 153 00:05:55,319 --> 00:05:57,540 A ver, embebido 154 00:05:57,540 --> 00:05:59,740 A mí me suena, pero no sé si me suena por el contexto 155 00:05:59,740 --> 00:06:01,939 De programación, pues que está incorporado 156 00:06:01,939 --> 00:06:03,279 En otra cosa, que va adentro 157 00:06:03,279 --> 00:06:04,800 Que va a incorporar otra cosa 158 00:06:04,800 --> 00:06:06,680 Me suena a eso 159 00:06:06,680 --> 00:06:09,220 Vale, pues esto 160 00:06:09,220 --> 00:06:11,019 Está incorporado, esta clase 161 00:06:11,019 --> 00:06:13,800 Es porque mapea una clave 162 00:06:13,800 --> 00:06:15,180 Que está incorporada 163 00:06:15,180 --> 00:06:17,319 En otro, que es aquí 164 00:06:17,319 --> 00:06:20,160 Entonces, vale, pues esta clave 165 00:06:20,160 --> 00:06:24,019 Esta clave de aquí 166 00:06:24,019 --> 00:06:27,100 Jugador videojuego ID 167 00:06:27,100 --> 00:06:28,680 Que es esta de aquí 168 00:06:28,680 --> 00:06:31,620 Tiene dos elementos 169 00:06:31,620 --> 00:06:34,740 Claro 170 00:06:34,740 --> 00:06:38,019 Jugador ID 171 00:06:38,019 --> 00:06:48,740 Videojuego ID 172 00:06:48,740 --> 00:06:50,519 Vale 173 00:06:50,519 --> 00:06:51,720 Y aquí ponemos 174 00:06:51,720 --> 00:06:54,839 La columna de la tabla 175 00:06:54,839 --> 00:06:56,699 De la que salen estas 176 00:06:56,699 --> 00:07:02,860 Name 177 00:07:02,860 --> 00:07:05,139 Vamos aquí a 178 00:07:05,139 --> 00:07:07,100 Jugador videojuego 179 00:07:07,100 --> 00:07:09,379 Es jugador id videojuego barra baja id 180 00:07:09,379 --> 00:07:12,269 Esto sería 181 00:07:12,269 --> 00:07:15,290 No, no, no 182 00:07:15,290 --> 00:07:22,709 No porque esta no es 183 00:07:22,709 --> 00:07:24,730 Esta no es una 184 00:07:24,730 --> 00:07:26,329 Esto no es una relación 185 00:07:26,329 --> 00:07:28,389 Con esto no estoy expresando una relación 186 00:07:28,389 --> 00:07:41,639 Videojuego 187 00:07:41,639 --> 00:07:42,680 Barra baja y D 188 00:07:42,680 --> 00:07:45,399 Entonces yo con esto estoy describiendo 189 00:07:45,399 --> 00:07:47,639 Mi clave, que está formada por dos cositas 190 00:07:47,639 --> 00:07:49,600 Estas dos cositas en la base 191 00:07:49,600 --> 00:07:50,220 De datos 192 00:07:50,220 --> 00:07:53,600 Se corresponden con estas columnas 193 00:07:54,279 --> 00:07:55,779 Voy a hacer 194 00:07:55,779 --> 00:07:56,819 Los get y set 195 00:07:56,819 --> 00:08:03,310 Vamos a hacer un constructor sin parámetros 196 00:08:03,310 --> 00:08:05,430 Porque lo del constructor, bueno, aunque ya lo tiene 197 00:08:05,430 --> 00:08:07,269 Porque, vale, si hiciera otro 198 00:08:07,269 --> 00:08:09,149 Con parámetros, entonces sí que le tendría que hacer 199 00:08:09,149 --> 00:08:11,089 sin parámetros, voy a dejarla 200 00:08:11,089 --> 00:08:12,889 así simple y si me dan errores 201 00:08:12,889 --> 00:08:14,430 y me empiezan a dar errores 202 00:08:14,430 --> 00:08:16,189 pues ya me complico la vida 203 00:08:16,189 --> 00:08:18,670 vale, entonces 204 00:08:18,670 --> 00:08:20,970 en esta, en esta creo recordar 205 00:08:20,970 --> 00:08:23,009 que no hay que anotarla de ninguna otra manera 206 00:08:23,009 --> 00:08:25,329 vamos a 207 00:08:25,329 --> 00:08:26,550 repasarlo por aquí 208 00:08:26,550 --> 00:08:28,410 porque ya no sé ni donde lo tengo 209 00:08:28,410 --> 00:08:30,529 aquí tengo una versión, vale 210 00:08:30,529 --> 00:08:34,330 vale 211 00:08:34,330 --> 00:08:38,220 no, no tengo que 212 00:08:38,220 --> 00:08:41,100 Aquí he puesto un constructor sin parámetros 213 00:08:41,100 --> 00:08:42,659 Porque he hecho uno con parámetros 214 00:08:42,659 --> 00:08:44,580 Entonces, vale 215 00:08:44,580 --> 00:08:46,519 A ver 216 00:08:46,519 --> 00:08:48,980 ¿Dónde estamos? Jugador, videojuego 217 00:08:48,980 --> 00:08:50,899 ID, pero no es de aquí 218 00:08:50,899 --> 00:08:53,139 Estamos en 219 00:08:53,139 --> 00:08:55,860 Esta 220 00:08:55,860 --> 00:08:58,460 Esta es 221 00:08:58,460 --> 00:08:59,100 Vale, aquí 222 00:08:59,100 --> 00:09:02,419 Lo normal, pero es que tampoco hace 223 00:09:02,419 --> 00:09:04,240 En realidad no hace falta, las cosas a veces 224 00:09:04,240 --> 00:09:06,480 Funcionan por defecto 225 00:09:06,480 --> 00:09:08,379 Pues JPA te dice 226 00:09:08,379 --> 00:09:11,500 o incluso otra GPT te dice 227 00:09:11,500 --> 00:09:13,639 cuidado 228 00:09:13,639 --> 00:09:15,539 esta que sea serializable 229 00:09:15,539 --> 00:09:17,340 esta sí, las otras he dicho que no 230 00:09:17,340 --> 00:09:18,279 esta sí, ¿por qué? 231 00:09:19,299 --> 00:09:21,139 porque el entity manager 232 00:09:21,139 --> 00:09:23,019 va a tener que pasar este objeto 233 00:09:23,019 --> 00:09:25,240 como idea única 234 00:09:25,240 --> 00:09:26,980 como una clave un montón de veces para el find 235 00:09:26,980 --> 00:09:27,899 para no sé qué, entonces 236 00:09:27,899 --> 00:09:31,639 contiene dos cosas, va a tener que serializarla 237 00:09:31,639 --> 00:09:32,740 ¿vale? entonces 238 00:09:32,740 --> 00:09:35,539 en los otros contextos la clave suelen ser 239 00:09:35,539 --> 00:09:37,240 long, suelen ser otras cosas que son 240 00:09:37,240 --> 00:09:39,059 ya serializables por naturaleza 241 00:09:39,059 --> 00:09:41,919 el long ya es serializable, el string ya es serializable 242 00:09:41,919 --> 00:09:43,320 todos son serializables 243 00:09:43,320 --> 00:09:45,559 todos se implementan serializables, este me lo he inventado yo 244 00:09:45,559 --> 00:09:47,440 que implemente serializable 245 00:09:47,440 --> 00:09:49,700 pues yo nunca me he encontrado esto en una situación 246 00:09:49,700 --> 00:09:51,799 en la cual por no ponerlo me de un error 247 00:09:51,799 --> 00:09:53,460 pero bueno 248 00:09:53,460 --> 00:09:54,679 la orden oficial 249 00:09:54,679 --> 00:09:56,299 es ponerlo 250 00:09:56,299 --> 00:09:57,879 ¿eh? 251 00:09:57,879 --> 00:09:58,500 si long 252 00:09:58,500 --> 00:09:59,259 ¿como? 253 00:10:00,259 --> 00:10:03,159 long si, string tambien 254 00:10:03,159 --> 00:10:05,279 pero este me lo he inventado yo 255 00:10:05,279 --> 00:10:08,100 claro, este es otro, este me lo he inventado yo 256 00:10:08,100 --> 00:10:09,419 entonces, pues 257 00:10:09,419 --> 00:10:12,120 si queremos hacer las cosas 258 00:10:12,120 --> 00:10:13,700 en plan, vamos a seguir estándares 259 00:10:13,700 --> 00:10:15,700 vamos a hacer, pues ponemos simplemente serializando 260 00:10:15,700 --> 00:10:16,919 pero 261 00:10:16,919 --> 00:10:19,720 si no lo ponemos, no pasa nada 262 00:10:19,720 --> 00:10:22,139 o al menos a mí no me ha pasado, bueno, la situación es la que sí 263 00:10:22,139 --> 00:10:23,840 hay todos seguros 264 00:10:23,840 --> 00:10:24,299 que le ha pasado 265 00:10:24,299 --> 00:10:30,440 sí 266 00:10:30,440 --> 00:10:33,080 espera, espera, es que no 267 00:10:33,080 --> 00:10:34,500 cuidado que no oigo 268 00:10:34,500 --> 00:10:36,659 Callados 269 00:10:36,659 --> 00:10:37,659 Callados 270 00:10:37,659 --> 00:10:44,840 Pero las otras 271 00:10:44,840 --> 00:10:46,279 Sí, o sea, por ejemplo, equipo 272 00:10:46,279 --> 00:10:48,639 También está utilizando clave primaria 273 00:10:48,639 --> 00:10:48,899 No 274 00:10:48,899 --> 00:10:51,220 Y tampoco 275 00:10:51,220 --> 00:10:54,940 El clave compuesta 276 00:10:54,940 --> 00:10:56,659 Creo que estaba compuesta por 277 00:10:56,659 --> 00:10:58,679 Otro objeto propio tuyo 278 00:10:58,679 --> 00:11:00,480 Ahí es cuando creo que te puede petar 279 00:11:00,480 --> 00:11:03,059 ¿Cómo? ¿Cómo? Repite tú 280 00:11:03,059 --> 00:11:04,679 Que en vez de tener un log y un log 281 00:11:04,679 --> 00:11:07,259 hubiera de alguna forma 282 00:11:07,259 --> 00:11:07,919 otra clase 283 00:11:07,919 --> 00:11:10,379 que no fuera serializable 284 00:11:10,379 --> 00:11:17,320 Puede ser, sí 285 00:11:17,320 --> 00:11:19,399 Es verdad que son 286 00:11:19,399 --> 00:11:21,200 situaciones, yo no sé 287 00:11:21,200 --> 00:11:23,220 si alguna vez habré trabajado 288 00:11:23,220 --> 00:11:25,320 con una situación en que una clave 289 00:11:25,320 --> 00:11:27,120 sea un objeto 290 00:11:27,120 --> 00:11:28,919 que no sea un log, un string 291 00:11:28,919 --> 00:11:31,279 una clave compuesta 292 00:11:31,279 --> 00:11:32,919 seguramente no 293 00:11:32,919 --> 00:11:35,240 Y por eso nunca he conseguido que me petara 294 00:11:35,240 --> 00:11:36,500 Sin poner aquí serializable 295 00:11:36,500 --> 00:11:39,139 Pero no perdemos nada por poner serializable 296 00:11:39,139 --> 00:11:41,240 No solo en esta, sino incluso en las demás 297 00:11:41,240 --> 00:11:42,159 Si es que no molesta 298 00:11:42,159 --> 00:11:43,620 Tampoco molesta 299 00:11:43,620 --> 00:11:46,460 Podrías llegar a usar esta clase como otra cosa más 300 00:11:46,460 --> 00:11:48,240 Y meter un objeto que no fuera column 301 00:11:48,240 --> 00:11:49,860 Que no lo usases para la clave 302 00:11:49,860 --> 00:11:52,860 Realmente tuviera otra propiedad más que no fuera serializable 303 00:11:52,860 --> 00:11:55,460 Uy, pero eso sí que no debería hacerlo 304 00:11:55,460 --> 00:11:57,279 Porque entonces ya sí que estoy mezclando cosas 305 00:11:57,279 --> 00:11:58,879 Esta es la clave, esos dos objetos 306 00:11:58,879 --> 00:11:59,559 Y ya está 307 00:11:59,559 --> 00:12:01,820 ¿Vale? 308 00:12:01,820 --> 00:12:28,340 Entonces, bueno, como se supone que todo el mundo te dice que lo hagas y es el estándar y en la situación en la que dice él, pues efectivamente puede que te pete, pues no pasa nada porque lo pongamos. Serializable. Vale, entonces, yo creo que aquí no hay que poner más cosas. 309 00:12:28,340 --> 00:12:29,580 también 310 00:12:29,580 --> 00:12:31,700 te hablan mucho 311 00:12:31,700 --> 00:12:34,139 de, claro, el problema de este objeto 312 00:12:34,139 --> 00:12:35,480 es que especialmente se empaqueta 313 00:12:35,480 --> 00:12:37,460 y tú lo pasas al find 314 00:12:37,460 --> 00:12:39,500 lo tienes ahí como marca de las claves 315 00:12:39,500 --> 00:12:42,399 el entity manager tiene ahí en sus marquitas 316 00:12:42,399 --> 00:12:44,519 sus objetos marcados con esta su clave 317 00:12:44,519 --> 00:12:45,759 entonces 318 00:12:45,759 --> 00:12:48,200 si no hay un hasco 319 00:12:48,200 --> 00:12:50,379 de equals, también en alguna situación 320 00:12:50,379 --> 00:12:52,460 podrías tener algún efecto extraño 321 00:12:52,460 --> 00:12:54,620 porque él tenga que comparar las claves 322 00:12:54,620 --> 00:12:56,419 y como no hay un hasco de equals 323 00:12:56,419 --> 00:12:57,379 por estos dos 324 00:12:57,379 --> 00:12:59,279 pues el funcionamiento 325 00:12:59,279 --> 00:13:00,120 no es el esperado 326 00:13:00,120 --> 00:13:03,259 yo tampoco me he encontrado una situación 327 00:13:03,259 --> 00:13:05,220 en la cual eso haya hecho que algo 328 00:13:05,220 --> 00:13:07,220 funcione mal, el no poner 329 00:13:07,220 --> 00:13:09,240 el jasco de equas, pero eso no 330 00:13:09,240 --> 00:13:10,879 significa que si lo pones 331 00:13:10,879 --> 00:13:12,500 casi mejor 332 00:13:12,500 --> 00:13:14,720 casi mejor, porque así 333 00:13:14,720 --> 00:13:17,480 si alguien va a tener que comparar 334 00:13:17,480 --> 00:13:19,340 dos claves, que eso sí que es una cosa 335 00:13:19,340 --> 00:13:21,000 muy natural, comparar dos claves 336 00:13:21,000 --> 00:13:22,980 pues no va a petar, quien, entity manager, 337 00:13:23,240 --> 00:13:25,259 sprint, quien sea, si alguien tiene que comparar dos 338 00:13:25,259 --> 00:13:27,320 claves, casi mejor vamos 339 00:13:27,320 --> 00:13:29,820 a dárselo por si acaso. 340 00:13:31,559 --> 00:13:33,159 En el servicio que estamos haciendo aquí 341 00:13:33,159 --> 00:13:35,559 y en muchos de los 342 00:13:35,559 --> 00:13:36,340 que hay en la lista, 343 00:13:37,519 --> 00:13:39,440 le quitas serializable y no 344 00:13:39,440 --> 00:13:40,919 va a pasar absolutamente nada, pero bueno. 345 00:13:47,190 --> 00:13:48,710 El año pasado, de hecho, 346 00:13:48,809 --> 00:13:50,210 cuando programábamos decíamos, 347 00:13:50,450 --> 00:13:52,629 cuando hacemos una entidad, aparte 348 00:13:52,629 --> 00:13:53,850 de las propiedades Getty Set, 349 00:13:54,509 --> 00:13:56,590 es bueno que nos acostumbremos a hacer siempre 350 00:13:56,590 --> 00:13:58,889 por defecto. Constructor con y sin parámetros. 351 00:13:58,889 --> 00:14:18,909 El sin parámetros siempre, porque es la forma que nos instancia por defecto de por ahí, del mundo. Constructor con sin parámetros. Hombre, tu stream para pruebas, claro. Y Hasco de Equals. Era un poco el hábito que habíamos cogido porque no perdemos nada por ponerlo ahí y podemos facilitar la vida cuando empezamos a poner capas una tras otra, una tras otra, que ya no sabemos ni lo que hacen con nosotros. 352 00:14:18,909 --> 00:14:21,789 Vale, pues yo creo que esta ya 353 00:14:21,789 --> 00:14:23,590 Ya estaría, y ahora ya 354 00:14:23,590 --> 00:14:26,370 La otra, jugador videojuego 355 00:14:26,370 --> 00:14:27,129 Que es esta 356 00:14:27,129 --> 00:14:31,799 Jugador videojuego, que es esta de aquí 357 00:14:31,799 --> 00:14:33,539 Esto de aquí 358 00:14:33,539 --> 00:14:36,039 Aquí, hay que empezar a ponerle 359 00:14:36,039 --> 00:14:38,059 Cositas que no me acuerdo muy bien 360 00:14:38,059 --> 00:14:39,620 Me voy a tener que mirar en la chuleta 361 00:14:39,620 --> 00:14:41,200 Esto hay que decir 362 00:14:41,200 --> 00:14:44,059 Este objeto hay que ponerlo porque es el de la relación 363 00:14:44,059 --> 00:14:45,320 Es el 364 00:14:45,320 --> 00:14:47,700 Claro, como no lo voy a poner 365 00:14:47,700 --> 00:14:48,720 Este objeto tiene que estar 366 00:14:48,720 --> 00:14:53,039 esta es la tabla, jugador videojuego 367 00:14:53,039 --> 00:14:54,539 que tiene estos dos elementos 368 00:14:54,539 --> 00:14:56,639 son los de la relación, los tengo que poner, vale 369 00:14:56,639 --> 00:14:59,440 pero tengo que poner que esto mapea 370 00:14:59,440 --> 00:14:59,840 esto 371 00:14:59,840 --> 00:15:03,360 este objeto viene mapeado desde una clave 372 00:15:03,360 --> 00:15:05,200 viene mapeado desde una clave 373 00:15:05,200 --> 00:15:05,860 que está aquí 374 00:15:05,860 --> 00:15:08,779 entonces, maps id 375 00:15:08,779 --> 00:15:09,740 y aquí 376 00:15:09,740 --> 00:15:12,779 no me acuerdo que atributo 377 00:15:13,379 --> 00:15:14,940 se le pone 378 00:15:14,940 --> 00:15:15,500 eh 379 00:15:15,500 --> 00:15:20,490 si, yo creo que directamente jugador id 380 00:15:20,490 --> 00:15:23,169 Pero déjame que lo mire para no ponerlo mal 381 00:15:23,169 --> 00:15:23,990 Desde el principio 382 00:15:23,990 --> 00:15:26,690 Eh, puede que esté aquí 383 00:15:26,690 --> 00:15:28,909 Sí, aquí hay algo 384 00:15:28,909 --> 00:15:30,610 Vale 385 00:15:30,610 --> 00:15:32,049 Ah, no, no, no 386 00:15:32,049 --> 00:15:34,629 Aquí, vale 387 00:15:34,629 --> 00:15:36,730 Efectivamente 388 00:15:36,730 --> 00:15:38,889 Directamente el elemento 389 00:15:38,889 --> 00:15:39,629 De 390 00:15:39,629 --> 00:15:42,889 Jugador, videojuego y de 391 00:15:42,889 --> 00:15:44,110 Vale 392 00:15:44,110 --> 00:15:46,470 A este 393 00:15:46,470 --> 00:15:47,289 Vale 394 00:15:47,289 --> 00:15:49,889 Y ya está, y lo demás está todo 395 00:15:49,889 --> 00:15:52,389 A ver 396 00:15:52,389 --> 00:15:56,629 Un segundito 397 00:15:56,629 --> 00:15:57,929 Espérate que encuentre la clase 398 00:15:57,929 --> 00:16:00,470 Para no perderme 399 00:16:00,470 --> 00:16:02,389 Porque tengo aquí mil rollos 400 00:16:02,389 --> 00:16:04,610 Aquí 401 00:16:04,610 --> 00:16:06,070 Vale, entonces 402 00:16:06,070 --> 00:16:08,309 Este es jugador ID 403 00:16:08,309 --> 00:16:09,610 Déjame que las termine de poner 404 00:16:09,610 --> 00:16:15,259 Videojuego ID 405 00:16:15,259 --> 00:16:22,080 Vale 406 00:16:22,080 --> 00:16:28,950 Y ahora, la última 407 00:16:28,950 --> 00:16:32,389 Esto hay que decir que es una clave que está embebida 408 00:16:32,389 --> 00:16:34,830 ¿Vale? Entonces la anotación id a palo seco 409 00:16:34,830 --> 00:16:34,929 ¿No? 410 00:16:39,460 --> 00:16:41,220 Ah, que me he dejado un paréntesis doble 411 00:16:41,220 --> 00:16:43,779 Jugador id 412 00:16:43,779 --> 00:16:44,740 Videojuego id, vale 413 00:16:44,740 --> 00:16:47,840 Y ahora esta hay que decirle que es una clave 414 00:16:47,840 --> 00:16:49,340 No es una clave normal y corriente 415 00:16:49,340 --> 00:16:51,000 Autoasignada, que venga de ahí 416 00:16:51,000 --> 00:16:52,720 O es una clave embebida 417 00:16:52,720 --> 00:16:53,240 Entonces 418 00:16:53,240 --> 00:16:55,059 Embed 419 00:16:55,059 --> 00:16:56,860 Id 420 00:16:56,860 --> 00:17:03,059 Vale, entonces una de estas creo que sobra 421 00:17:03,059 --> 00:17:04,900 Lo que pasa es que siempre la ponemos 422 00:17:04,900 --> 00:17:05,559 Y la dejamos 423 00:17:05,559 --> 00:17:08,200 esto pues que significa 424 00:17:08,200 --> 00:17:10,180 esto cambiamos id por mdid 425 00:17:10,180 --> 00:17:11,799 porque es una clave en bebida, ya está 426 00:17:11,799 --> 00:17:13,460 con lo cual tiene que haber java 427 00:17:13,460 --> 00:17:16,259 jpa para montar su entity manager 428 00:17:16,259 --> 00:17:18,319 cuando se crea el contexto 429 00:17:18,319 --> 00:17:19,279 de persistencia 430 00:17:19,279 --> 00:17:21,579 lo primero, bueno entre muchas otras cosas 431 00:17:21,579 --> 00:17:24,059 lo que hace jpa aparte de verificar que la conexión 432 00:17:24,059 --> 00:17:25,519 los parámetros de la conexión son correctos 433 00:17:25,519 --> 00:17:27,859 el persisten y todo eso, pues verifica 434 00:17:27,859 --> 00:17:30,099 todas las entidades, verifica que están todas bien 435 00:17:30,099 --> 00:17:31,359 entonces 436 00:17:31,359 --> 00:17:33,799 el verificará, ah vale realmente 437 00:17:33,799 --> 00:17:34,859 hay una clase 438 00:17:34,859 --> 00:17:37,539 Esta es una clase que has hecho tú 439 00:17:37,539 --> 00:17:39,480 Una clave que has hecho tú 440 00:17:39,480 --> 00:17:42,180 Hay una clase aquí en vedable entonces que se corresponde 441 00:17:42,180 --> 00:17:43,599 Si realmente la hay 442 00:17:43,599 --> 00:17:44,500 Pues 443 00:17:44,500 --> 00:17:47,759 Si, si que la hay, es esta, estupendo 444 00:17:47,759 --> 00:17:50,200 Vale, entonces, son, tiene dos campos 445 00:17:50,200 --> 00:17:51,119 Vale, entonces 446 00:17:51,119 --> 00:17:53,299 Estos dos campos son 447 00:17:53,299 --> 00:18:05,500 Vale, estos dos campos 448 00:18:05,500 --> 00:18:06,519 Son 449 00:18:06,519 --> 00:18:10,019 Son dos long 450 00:18:10,019 --> 00:18:12,039 Vale, se van a corresponder 451 00:18:12,039 --> 00:18:13,680 Con claves, con relaciones 452 00:18:13,680 --> 00:18:14,480 Lógicamente 453 00:18:14,480 --> 00:18:16,799 Que me dan estos dos objetos 454 00:18:16,799 --> 00:18:18,119 Entonces 455 00:18:18,119 --> 00:18:21,390 Esta de aquí 456 00:18:21,390 --> 00:18:24,930 Es la que nunca he probado a quitarla 457 00:18:24,930 --> 00:18:26,630 Pero es probable 458 00:18:26,630 --> 00:18:28,910 Que quitándola funcionara igualmente 459 00:18:28,910 --> 00:18:30,890 Porque aquí ya tienes 460 00:18:30,890 --> 00:18:33,410 A qué columna se mapea ese objeto 461 00:18:33,410 --> 00:18:34,470 ¿Vale? 462 00:18:34,529 --> 00:18:35,410 Pero siempre se pone 463 00:18:35,410 --> 00:18:37,710 Porque es una relación, tú pones la columna y ya está 464 00:18:37,710 --> 00:18:40,869 Entonces, pues la relación es poder quitarle dos 465 00:18:40,869 --> 00:18:42,930 No, hombre, las dos no 466 00:18:42,930 --> 00:18:44,809 Porque entonces el nombre de la columna, ¿dónde lo dejo? 467 00:18:44,990 --> 00:18:49,369 el nombre de la columna tiene que estar indicado en algún sitio 468 00:18:49,369 --> 00:18:51,069 entonces está redundante 469 00:18:51,069 --> 00:18:54,339 si lo quito de aquí 470 00:18:54,339 --> 00:18:56,200 sí que no me funciona 471 00:18:56,200 --> 00:18:58,240 pero nunca he probado 472 00:18:58,240 --> 00:18:59,680 a quitarlo del otro lado 473 00:18:59,680 --> 00:19:02,839 pero porque esto siempre se pone por defecto 474 00:19:02,839 --> 00:19:04,680 tienes una relación, pones la columna que lo unes 475 00:19:05,339 --> 00:19:06,559 ¿vale? entonces como aquí 476 00:19:06,559 --> 00:19:08,500 estás poniendo que este objeto 477 00:19:08,500 --> 00:19:10,039 se mapea a través de clave 478 00:19:10,039 --> 00:19:12,299 entonces él se va a videojuego id 479 00:19:12,299 --> 00:19:14,579 y en videojuego id ya tiene 480 00:19:14,579 --> 00:19:16,640 la columna, de ahí viene 481 00:19:16,640 --> 00:19:18,759 mi duda de si este 482 00:19:18,759 --> 00:19:20,579 en realidad no le hace falta porque 483 00:19:20,579 --> 00:19:22,700 a través de maps id que le dice 484 00:19:22,700 --> 00:19:24,460 que este objeto videojuego 485 00:19:24,460 --> 00:19:26,380 se mapea a través de la clave, entonces 486 00:19:26,380 --> 00:19:28,579 él se va a la clave y ve que aquí está 487 00:19:28,579 --> 00:19:30,420 la columna, pues entonces 488 00:19:30,420 --> 00:19:32,440 ese join column no le hiciera falta 489 00:19:32,440 --> 00:19:34,640 no lo sé, podemos probar 490 00:19:34,640 --> 00:19:35,980 a quitarlo y sigue funcionando 491 00:19:35,980 --> 00:19:38,779 pero, claro, gracias a los dos 492 00:19:38,779 --> 00:19:39,960 pero hombre 493 00:19:39,960 --> 00:19:42,740 que ganas, vamos a anotar las cosas bien 494 00:19:42,740 --> 00:19:44,519 en realidad cuanto más redundancia 495 00:19:44,519 --> 00:19:46,240 O sea, controlada 496 00:19:46,240 --> 00:19:47,359 Pues mejor 497 00:19:47,359 --> 00:19:50,079 ¿Vale? Entonces 498 00:19:50,079 --> 00:19:52,240 Y ya estaría 499 00:19:52,240 --> 00:19:55,140 Ahora, esto al hacer una clave única 500 00:19:55,140 --> 00:19:56,759 Esto ya, el servicio 501 00:19:56,759 --> 00:19:59,920 De eliminar la asociación es mucho más sencillo 502 00:19:59,920 --> 00:20:04,349 Espérate un momento 503 00:20:04,349 --> 00:20:06,109 Que ya no sé que las tengo abiertas 504 00:20:06,109 --> 00:20:08,470 Vámonos aquí, voy a repasar las que las he cambiado 505 00:20:08,470 --> 00:20:09,130 En el sitio bueno 506 00:20:09,130 --> 00:20:11,650 Videojuego ID 507 00:20:11,650 --> 00:20:13,509 Esta está bien 508 00:20:13,509 --> 00:20:16,269 Con su Hasco de Equals 509 00:20:16,269 --> 00:20:16,809 Vale 510 00:20:16,809 --> 00:20:18,230 Ahora 511 00:20:18,230 --> 00:20:20,970 Sí, lo que te refieres 512 00:20:20,970 --> 00:20:22,529 Ahora, esta otra 513 00:20:22,529 --> 00:20:25,269 Esta de aquí 514 00:20:25,269 --> 00:20:27,230 Jugador videojuego 515 00:20:27,230 --> 00:20:29,170 Efectivamente, su Hasco de Equals 516 00:20:29,170 --> 00:20:30,990 A ver, los dos 517 00:20:30,990 --> 00:20:33,029 Funcionan como Hasco de Equals 518 00:20:33,029 --> 00:20:34,430 Porque es que son lo mismo, en realidad 519 00:20:34,430 --> 00:20:36,589 Es decir, si es igual esta clave 520 00:20:36,589 --> 00:20:38,750 Es porque son iguales simultáneamente estos dos 521 00:20:38,750 --> 00:20:40,809 Pero es un Hasco de Equals más feo 522 00:20:40,809 --> 00:20:42,670 Tirar de esos dos objetos 523 00:20:42,670 --> 00:20:44,230 Hay que tirar del de arriba, efectivamente 524 00:20:44,230 --> 00:20:46,150 Entonces 525 00:20:46,150 --> 00:20:48,890 Este está bien completo 526 00:20:48,890 --> 00:20:50,829 Él tiene la tabla, la clave 527 00:20:50,829 --> 00:20:54,130 Esto de donde sale 528 00:20:54,130 --> 00:20:55,609 Y lo demás está 529 00:20:55,609 --> 00:20:58,750 Entonces este Hasco de Equals 530 00:20:58,750 --> 00:21:04,839 Yo de hecho 531 00:21:04,839 --> 00:21:06,400 Casi creo que 532 00:21:06,400 --> 00:21:08,880 Que lo dejaría así 533 00:21:08,880 --> 00:21:10,519 Porque 534 00:21:10,519 --> 00:21:12,359 En un contexto 535 00:21:12,359 --> 00:21:14,420 fuera de JPA, 536 00:21:14,599 --> 00:21:16,200 estas entidades no tienen 537 00:21:16,200 --> 00:21:18,140 por qué formar parte siempre 538 00:21:18,140 --> 00:21:20,619 de un contexto JPA. Estarán en mi aplicación 539 00:21:20,619 --> 00:21:21,500 haciendo cosas 540 00:21:21,500 --> 00:21:24,220 y en mi aplicación, cuando yo trabajo 541 00:21:24,220 --> 00:21:26,240 al margen de JPA, esto 542 00:21:26,240 --> 00:21:28,420 pierde su sentido. Lo que importa 543 00:21:28,420 --> 00:21:30,420 es este objeto y este otro. 544 00:21:30,559 --> 00:21:32,299 Entonces, si yo trabajo con colecciones, con map, 545 00:21:32,380 --> 00:21:34,619 con sets, pues esos maps y sets 546 00:21:34,619 --> 00:21:36,680 necesitan el equals de estos dos, 547 00:21:36,960 --> 00:21:37,819 no del otro, 548 00:21:38,240 --> 00:21:40,680 que puede ser null perfectamente. Si yo estoy fuera de JPA, 549 00:21:40,799 --> 00:21:42,140 el objeto de arriba podría ser null. 550 00:21:42,359 --> 00:21:44,680 entonces yo casi 551 00:21:44,680 --> 00:21:47,640 preferiría dejar el Hasco de Equals 552 00:21:47,640 --> 00:21:49,500 así, el objeto del Hasco 553 00:21:49,500 --> 00:21:51,720 de Equals es, como bien sabéis 554 00:21:51,720 --> 00:21:53,019 si me trabajan 555 00:21:53,019 --> 00:21:54,460 metido en colecciones 556 00:21:54,460 --> 00:21:57,579 cuando yo controlo toda la aplicación sé si trabajo 557 00:21:57,579 --> 00:21:59,420 con colecciones o no, si alguien me 558 00:21:59,420 --> 00:22:01,240 controla a mí, como Entity Manager 559 00:22:01,240 --> 00:22:02,359 Spring, quien sea 560 00:22:02,359 --> 00:22:05,460 pues como no lo sé, si me van a meter en colecciones 561 00:22:05,460 --> 00:22:06,680 o no, lo pongo y ya está 562 00:22:06,680 --> 00:22:09,359 entonces yo casi creo que dejaría la versión 563 00:22:09,359 --> 00:22:10,099 con esos dos 564 00:22:10,099 --> 00:22:11,839 Y se acabó 565 00:22:11,839 --> 00:22:14,440 Entonces, ahora el método este del servicio 566 00:22:14,440 --> 00:22:16,359 Famoso 567 00:22:16,359 --> 00:22:19,579 Este, la versión 2 568 00:22:19,579 --> 00:22:32,519 Se queda mucho más sencillo 569 00:22:32,519 --> 00:22:33,480 Entonces 570 00:22:33,480 --> 00:22:34,680 Este 571 00:22:34,680 --> 00:22:40,599 Me falta la llave 572 00:22:40,599 --> 00:22:53,000 Ahora ya, pues cogemos el objeto 573 00:22:53,000 --> 00:22:54,359 Y lo mandamos a la porra 574 00:22:54,359 --> 00:22:55,900 Y ya está 575 00:22:55,900 --> 00:23:02,009 El juego 576 00:23:02,009 --> 00:23:06,259 Y de 577 00:23:06,259 --> 00:23:14,180 Jugador 578 00:23:14,180 --> 00:23:16,000 Videojuego 579 00:23:16,000 --> 00:23:17,599 Con los dos 580 00:23:17,599 --> 00:23:19,180 No sé cuál tengo primero 581 00:23:19,180 --> 00:23:22,900 Tengo primero 582 00:23:22,900 --> 00:23:25,720 No tengo constructor 583 00:23:25,720 --> 00:23:26,839 Con los dos parámetros 584 00:23:26,839 --> 00:23:28,640 Entonces se lo voy a poner 585 00:23:28,640 --> 00:23:40,619 Jugador primero y videojuego después 586 00:23:40,619 --> 00:23:41,440 Entonces 587 00:23:41,440 --> 00:23:43,500 Jugador primero 588 00:23:43,500 --> 00:23:50,630 Y videojuego después 589 00:23:50,630 --> 00:24:02,839 Y de jugador 590 00:24:02,839 --> 00:24:04,539 Y de videojuego, ¿cuál es el problema? 591 00:24:05,539 --> 00:24:06,839 Ah, jugador, videojuego y de 592 00:24:06,839 --> 00:24:07,519 Perdón, perdón 593 00:24:07,519 --> 00:24:08,579 Vale 594 00:24:08,579 --> 00:24:15,980 Y ahora ya sí puedo hacer en .find 595 00:24:15,980 --> 00:24:25,670 Jugador videojuego.class 596 00:24:25,670 --> 00:24:27,230 La clave 597 00:24:27,230 --> 00:24:33,049 Y ahora en .remove 598 00:24:33,730 --> 00:24:34,390 Esto 599 00:24:34,390 --> 00:24:44,960 Sería guardarte el find 600 00:24:44,960 --> 00:24:47,259 En un jugador videojuego 601 00:24:47,259 --> 00:24:49,759 Sí, sí, sí, sí 602 00:24:49,759 --> 00:24:54,480 Jugador videojuego 603 00:24:54,480 --> 00:24:57,680 El juego que estoy 604 00:24:57,680 --> 00:24:58,640 Aquí haciendo 605 00:24:58,640 --> 00:25:03,549 Sí, que he hecho una tontería, he borrado una cosa 606 00:25:03,549 --> 00:25:04,609 Que ni siquiera es un objeto 607 00:25:04,609 --> 00:25:06,089 De 608 00:25:06,089 --> 00:25:12,849 Vale, pues ahora ya 609 00:25:12,849 --> 00:25:16,170 Voy a borrar el 3-3 610 00:25:16,170 --> 00:25:21,470 Desde el main 611 00:25:21,470 --> 00:25:29,000 3-3 612 00:25:29,000 --> 00:25:36,200 Uy, que bien, que bien 613 00:25:36,200 --> 00:25:38,279 Esto nos viene magnífico 614 00:25:38,279 --> 00:25:43,750 No ha encontrado 615 00:25:43,750 --> 00:25:45,430 El constructor para 616 00:25:45,430 --> 00:25:48,690 Jugador, videojuego 617 00:25:48,690 --> 00:25:49,910 ID, tu con el 618 00:25:49,910 --> 00:25:52,329 Enredable, a ver 619 00:25:52,329 --> 00:25:55,990 Ah, es que al poner constructor con parámetros 620 00:25:55,990 --> 00:25:57,210 He inhabilitado el otro 621 00:25:57,210 --> 00:25:59,750 Claro, he inhabilitado el vacío 622 00:25:59,750 --> 00:26:04,339 Vale, magnífico 623 00:26:04,339 --> 00:26:06,960 Sí 624 00:26:06,960 --> 00:26:14,039 Vale, entonces yo creo que es esto 625 00:26:14,039 --> 00:26:15,779 Pero que normalmente 626 00:26:15,779 --> 00:26:17,880 Te dice, no constructor, no sé qué 627 00:26:17,880 --> 00:26:20,380 Y este lo he puesto más complicado 628 00:26:20,380 --> 00:26:20,859 Porque dice 629 00:26:20,859 --> 00:26:23,079 No encuentro el constructor 630 00:26:23,079 --> 00:26:24,519 Pero no te dice que el que necesita es el otro 631 00:26:24,519 --> 00:26:26,539 Pero a ver, yo entiendo que es eso 632 00:26:26,539 --> 00:26:27,819 Vamos a ver 633 00:26:27,819 --> 00:26:34,730 Pues era eso, efectivamente 634 00:26:34,730 --> 00:26:37,930 Ala, ya está quitado 635 00:26:37,930 --> 00:26:38,509 ¿Cuál? 636 00:26:40,630 --> 00:26:41,029 Este 637 00:26:41,029 --> 00:27:11,349 Bueno, pues bien para todo el mundo, ¿no? 638 00:27:17,460 --> 00:27:19,220 Bueno, y así podríamos llamar 639 00:27:19,220 --> 00:27:20,539 A un montón de métodos 640 00:27:20,539 --> 00:27:22,380 O sea, hacer un montón de servicios 641 00:27:22,380 --> 00:27:23,960 y al final 642 00:27:23,960 --> 00:27:26,019 acaban siendo todos muy fáciles 643 00:27:26,019 --> 00:27:28,259 recuperar, coger un objeto 644 00:27:28,259 --> 00:27:30,420 toquetearlo, cuando hay relaciones 645 00:27:30,420 --> 00:27:31,619 es más complicado, etc. 646 00:27:32,559 --> 00:27:33,759 pero quería yo 647 00:27:33,759 --> 00:27:36,039 este en particular 648 00:27:36,039 --> 00:27:37,500 para 649 00:27:37,500 --> 00:27:40,380 quería yo este en particular 650 00:27:40,380 --> 00:27:42,440 para cuando 651 00:27:42,440 --> 00:27:44,740 se hace una JPQL 652 00:27:44,740 --> 00:27:46,319 que no te devuelve 653 00:27:46,319 --> 00:27:47,660 una entidad concreta 654 00:27:47,660 --> 00:27:49,960 este método 655 00:27:49,960 --> 00:27:52,559 Este, era uno de los servicios que estaban en la lista. 656 00:27:54,660 --> 00:27:57,559 Entonces, voy a comentarlo todo para que… 657 00:27:59,579 --> 00:28:05,720 No, no, no, a ver, si lo que os he dicho es JPQL, 658 00:28:07,119 --> 00:28:12,700 la clave es que uno tenga la noción de que es como SQL más o menos, 659 00:28:13,700 --> 00:28:16,720 salvo que en lugar de tablas trabajas con nombres de clases 660 00:28:16,720 --> 00:28:19,319 Y en lugar de campos de tablas 661 00:28:19,319 --> 00:28:21,259 Trabajas con nombres de propiedades 662 00:28:21,259 --> 00:28:23,039 La sintaxis es similar 663 00:28:23,039 --> 00:28:24,220 ¿Vale? 664 00:28:25,339 --> 00:28:25,519 No 665 00:28:25,519 --> 00:28:27,880 Pero bueno, un join es de SQL 666 00:28:27,880 --> 00:28:33,740 A ver, se usa mucho, ¿eh? 667 00:28:33,740 --> 00:28:34,759 El join es... 668 00:28:34,759 --> 00:28:35,940 Es el periódico que no lo usaba 669 00:28:35,940 --> 00:28:38,319 Porque escribíamos 670 00:28:38,319 --> 00:28:40,019 O algo así, ¿no? 671 00:28:40,980 --> 00:28:42,019 A ver, puede ser 672 00:28:42,019 --> 00:28:46,119 No lo sé 673 00:28:46,119 --> 00:28:48,160 a mí el join, pues yo qué sé, si me gusta 674 00:28:48,160 --> 00:28:50,200 entre que no lo vimos 675 00:28:50,200 --> 00:28:52,200 y que no me acuerdo casi nada de ese culo de algo 676 00:28:52,200 --> 00:28:53,599 pero 677 00:28:53,599 --> 00:28:58,440 no tenemos que aprender 678 00:28:58,440 --> 00:29:00,259 nosotros nada, por eso lo que os he 679 00:29:00,259 --> 00:29:02,140 dicho siempre es, teniendo las nociones 680 00:29:02,140 --> 00:29:04,500 básicas, cuando uno tiene que hacer una consulta 681 00:29:04,500 --> 00:29:05,539 más compleja 682 00:29:05,539 --> 00:29:08,339 pues la pide a alguien que se la haga 683 00:29:08,339 --> 00:29:10,359 si es que trabajamos así, por qué vamos 684 00:29:10,359 --> 00:29:12,420 a negarnos 685 00:29:12,420 --> 00:29:14,259 a eso, eso sí, hay que 686 00:29:14,259 --> 00:29:15,759 tener las nociones básicas 687 00:29:15,759 --> 00:29:18,519 ¿Vale? Y hombre, la noción básica del join 688 00:29:18,519 --> 00:29:20,539 Aunque no lo vierais 689 00:29:20,539 --> 00:29:21,980 El año pasado, pues más o menos 690 00:29:21,980 --> 00:29:24,579 Si ChaGPT os hace una consulta con un join 691 00:29:24,579 --> 00:29:25,259 La entendéis 692 00:29:25,259 --> 00:29:27,700 Está ligando una tabla con otra a través de un campo 693 00:29:27,700 --> 00:29:29,220 ¿Vale? Entonces 694 00:29:29,220 --> 00:29:34,119 Vamos a hacer este método 695 00:29:34,119 --> 00:29:38,250 Este servicio 696 00:29:38,250 --> 00:29:40,470 En nuestra clase de servicios 697 00:29:40,470 --> 00:29:50,579 Vale 698 00:29:50,579 --> 00:29:52,900 Este servicio de aquí era 699 00:29:52,900 --> 00:29:55,400 A mí me había gustado 700 00:29:55,400 --> 00:29:56,880 Y por eso lo había cogido 701 00:29:56,880 --> 00:29:58,599 Porque te devuelve 702 00:29:58,599 --> 00:30:01,380 Datos que pertenecen a diferentes 703 00:30:01,380 --> 00:30:02,380 Tablas y clases 704 00:30:02,380 --> 00:30:05,720 Porque JPQL cuando recuperas 705 00:30:05,720 --> 00:30:07,579 Una lista de equipos 706 00:30:07,579 --> 00:30:09,319 Por ejemplo, o un jugador 707 00:30:09,319 --> 00:30:11,039 Pues es muy fácil porque pones 708 00:30:11,039 --> 00:30:13,299 Select, jugador 709 00:30:13,299 --> 00:30:14,500 O select equipo 710 00:30:14,500 --> 00:30:15,740 Y ya está 711 00:30:15,740 --> 00:30:17,700 Y nada más 712 00:30:17,700 --> 00:30:21,380 Pero cuando quieres coger datos de diferentes clases 713 00:30:21,380 --> 00:30:23,579 Ya se complica un pelinín 714 00:30:23,579 --> 00:30:25,200 Vale, pues este método 715 00:30:25,200 --> 00:30:27,579 que queremos que haga, tiene que coger 716 00:30:27,579 --> 00:30:29,539 el ranking 717 00:30:29,539 --> 00:30:30,640 que tiene 718 00:30:30,640 --> 00:30:33,400 ¿por qué entiende esto? 719 00:30:34,599 --> 00:30:35,799 tiene que 720 00:30:35,799 --> 00:30:37,319 coger de un jugador 721 00:30:37,319 --> 00:30:40,730 no, a ver 722 00:30:40,730 --> 00:30:42,529 tú le das un videojuego 723 00:30:42,529 --> 00:30:46,029 y te devuelven los jugadores que juegan 724 00:30:46,029 --> 00:30:47,390 a ese videojuego 725 00:30:47,390 --> 00:30:48,869 su nombre y su nivel 726 00:30:48,869 --> 00:30:50,809 y su puntuación 727 00:30:50,809 --> 00:30:53,549 nombre, nivel, puntuaciones, por ejemplo 728 00:30:53,549 --> 00:30:55,369 lo que queramos nosotros que devuelva 729 00:30:55,369 --> 00:30:56,910 pero en cualquier caso 730 00:30:56,910 --> 00:30:59,670 Van a ser datos que están en diferentes clases 731 00:30:59,670 --> 00:31:00,910 Nivel 732 00:31:00,910 --> 00:31:02,029 No sé dónde está 733 00:31:02,029 --> 00:31:05,190 Nivel está en jugador videojuego 734 00:31:05,190 --> 00:31:07,829 Pero el nombre del jugador 735 00:31:07,829 --> 00:31:08,730 Está en jugador 736 00:31:08,730 --> 00:31:10,470 Con lo cual aquí 737 00:31:10,470 --> 00:31:11,990 Se nos plantea la primera duda 738 00:31:11,990 --> 00:31:13,609 Que es el select, ¿qué hace? 739 00:31:13,750 --> 00:31:16,210 Select jugador, select jugador videojuego 740 00:31:16,210 --> 00:31:18,170 Select, tiene que hacer un select 741 00:31:18,170 --> 00:31:20,309 De diferentes clases, distintas 742 00:31:20,309 --> 00:31:22,630 Bueno, entonces 743 00:31:22,630 --> 00:31:24,630 ¿Nosotros qué hacemos aquí? 744 00:31:25,289 --> 00:31:26,529 Pues se la pedimos obviamente 745 00:31:26,529 --> 00:31:28,589 HGPT, o a Gemini o a la Q6 746 00:31:28,589 --> 00:31:30,410 ¿Vale? No en el examen 747 00:31:30,410 --> 00:31:32,710 Pero yo en el examen no os pongo consultas difíciles 748 00:31:32,710 --> 00:31:34,509 Pero en vuestra vida, pues lógicamente 749 00:31:34,509 --> 00:31:35,289 Es lo que hacéis, ¿no? 750 00:31:36,470 --> 00:31:37,670 Vale, entonces 751 00:31:37,670 --> 00:31:42,230 Aquí os daría 752 00:31:42,230 --> 00:31:44,529 Una consulta, bueno, pero vamos a hacer la consulta 753 00:31:48,859 --> 00:31:51,839 Transact, bueno, aquí no haría 754 00:31:51,839 --> 00:31:53,539 Falta porque es una consulta, pero bueno 755 00:31:53,539 --> 00:31:57,819 Claro, es una query, entonces no haría 756 00:31:57,819 --> 00:31:59,700 Falta, pero bueno, vale, entonces aquí 757 00:31:59,700 --> 00:32:01,799 Hay que hacer una query 758 00:32:01,799 --> 00:32:04,400 Create 759 00:32:04,400 --> 00:32:08,920 Create query 760 00:32:08,920 --> 00:32:11,799 Porque esto no lo puedo hacer por find ni por nada 761 00:32:11,799 --> 00:32:14,440 Vale 762 00:32:14,440 --> 00:32:17,160 Y aquí en create query 763 00:32:17,160 --> 00:32:19,339 Pues ya tengo que poner todo lo que 764 00:32:19,339 --> 00:32:21,079 Tengo que poner aquí y luego ya 765 00:32:21,079 --> 00:32:22,599 El get results, etcétera 766 00:32:22,599 --> 00:32:24,940 Y ahora es cuando tengo el rollo de la query 767 00:32:24,940 --> 00:32:27,220 Vale, entonces, de la query yo que quiero 768 00:32:27,220 --> 00:32:29,059 Quiero el nick del jugador 769 00:32:29,059 --> 00:32:31,339 El equipo al que pertenece 770 00:32:31,339 --> 00:32:33,279 El nivel al que está jugando 771 00:32:33,279 --> 00:32:34,119 Y en qué posición 772 00:32:34,119 --> 00:32:37,059 O sea, cosas que pertenecen 773 00:32:37,059 --> 00:32:39,079 A diferentes entidades 774 00:32:39,079 --> 00:32:40,880 ¿Vale? ¿A cuántas? 775 00:32:41,259 --> 00:32:42,759 A jugador videojuego 776 00:32:42,759 --> 00:32:45,019 A jugador videojuego pertenece la posición 777 00:32:45,019 --> 00:32:48,319 A jugador normal 778 00:32:48,319 --> 00:32:50,119 Pertenece 779 00:32:50,119 --> 00:32:52,400 El nick 780 00:32:52,400 --> 00:32:56,710 A equipo pertenece el nombre 781 00:32:56,710 --> 00:32:57,890 Es decir 782 00:32:57,890 --> 00:32:59,750 Yo voy a seleccionar de varias tablas 783 00:32:59,750 --> 00:33:01,950 esto es lo que Manoli, digo yo que lo haría 784 00:33:01,950 --> 00:33:03,789 multitabla entonces, haría un front 785 00:33:03,789 --> 00:33:04,970 con todas las tablas a mogollón 786 00:33:04,970 --> 00:33:09,109 bueno, a ver 787 00:33:09,109 --> 00:33:11,650 no sé, a mí me parece más cómodo escribir con el join 788 00:33:11,650 --> 00:33:13,809 pero vamos, que viene a ser un poco lo mismo 789 00:33:13,809 --> 00:33:17,710 entonces aquí 790 00:33:17,710 --> 00:33:19,730 en nuestro select 791 00:33:19,730 --> 00:33:21,910 pues haríamos, para hacer el 792 00:33:21,910 --> 00:33:23,349 multilínea este de aquí 793 00:33:23,349 --> 00:33:25,730 el multilínea de aquí 794 00:33:25,730 --> 00:33:27,730 recordad que tenéis que tenerlo 795 00:33:27,730 --> 00:33:29,369 Habilitado por encima 796 00:33:29,369 --> 00:33:31,150 Porque como hay veces en función de 797 00:33:31,150 --> 00:33:33,470 El plugin de Maven, si uno no se da cuenta 798 00:33:33,470 --> 00:33:35,609 Igual te lo pone en la versión 1.8 799 00:33:35,609 --> 00:33:36,490 Vete a saber en cuál 800 00:33:36,490 --> 00:33:38,869 Porque la 1.8 801 00:33:38,869 --> 00:33:40,730 Tuvo mucho 802 00:33:40,730 --> 00:33:43,089 Mucho poder 803 00:33:43,089 --> 00:33:46,809 Si en el POM 804 00:33:46,809 --> 00:33:50,049 Tú en el POM puedes configurar 805 00:33:50,049 --> 00:33:51,609 En el Eclipse 806 00:33:51,609 --> 00:33:52,690 A ver, en el Eclipse 807 00:33:52,690 --> 00:33:55,150 Pues no lo sé 808 00:33:55,150 --> 00:33:57,569 A mí no sé, a mí me lo crea 809 00:33:57,569 --> 00:33:59,569 creo que en la 17, ah no, en la 17 810 00:33:59,569 --> 00:34:01,210 cuando lo hago con Spring Boot, claro 811 00:34:01,210 --> 00:34:02,250 pero 812 00:34:02,250 --> 00:34:05,150 pero a mí me lo crea en la 1.8 813 00:34:05,150 --> 00:34:07,410 pero yo mi Eclipse llevo sin actualizarla 814 00:34:07,410 --> 00:34:08,469 no sé si un año por ahí 815 00:34:08,469 --> 00:34:11,530 en la 1.8, entonces cuidado porque en la 1.8 816 00:34:11,530 --> 00:34:13,530 hay cosas que no funcionan 817 00:34:13,530 --> 00:34:15,110 pero a ver, son cosas chorras 818 00:34:15,110 --> 00:34:16,809 vale, pues aquí entonces 819 00:34:16,809 --> 00:34:21,510 a ver, te da error porque igual 820 00:34:21,510 --> 00:34:23,130 no tienes la versión de 821 00:34:23,130 --> 00:34:25,190 es que puedes haber cambiado la máquina virtual 822 00:34:25,190 --> 00:34:27,150 pero haber cambiado el nivel de compilación, ten cuidado 823 00:34:27,150 --> 00:34:29,329 Eso importa del nivel de compilación 824 00:34:29,329 --> 00:34:30,730 Pero a mí se me cambia 825 00:34:30,730 --> 00:34:33,929 Se me cambia los dos 826 00:34:33,929 --> 00:34:35,510 O sea, cuando yo en el 827 00:34:35,510 --> 00:34:37,070 En el POM 828 00:34:37,070 --> 00:34:39,349 En el JRE System Error y cambio la versión 829 00:34:39,349 --> 00:34:41,449 Arriba en el proyecto también me la cambia 830 00:34:41,449 --> 00:34:43,889 ¿El nivel de compilación te lo cambia también? 831 00:34:44,050 --> 00:34:46,070 ¿Tú te metes en Compiler y te cambia el nivel? 832 00:34:46,190 --> 00:34:46,630 Sí, sí, sí, pone 21 833 00:34:46,630 --> 00:34:48,590 Ah, pues la primera vez que lo veo 834 00:34:48,590 --> 00:34:50,269 Yo lo tengo que cambiar siempre a mano 835 00:34:50,269 --> 00:34:53,250 A menos que lo tenga especificado en el POM 836 00:34:53,250 --> 00:34:54,130 No sé 837 00:34:54,130 --> 00:34:56,469 Bueno, pues si tu nivel de compilación está 838 00:34:56,469 --> 00:34:58,429 Del bla bla bla hacia arriba 839 00:34:58,429 --> 00:34:59,590 Que no se cual es 840 00:34:59,590 --> 00:35:01,630 Que debería funcionar 841 00:35:01,630 --> 00:35:04,750 Vale pues entonces aquí vamos a seleccionar un montón de cosas 842 00:35:04,750 --> 00:35:06,530 Vamos a seleccionar el nick 843 00:35:06,530 --> 00:35:07,250 Hemos dicho 844 00:35:07,250 --> 00:35:09,530 Vamos a seleccionar 845 00:35:09,530 --> 00:35:12,710 El nombre 846 00:35:12,710 --> 00:35:18,210 El nombre 847 00:35:18,210 --> 00:35:19,809 Equipo 848 00:35:19,809 --> 00:35:20,670 Equipo 849 00:35:20,670 --> 00:35:21,289 Entonces equipo 850 00:35:21,289 --> 00:35:24,130 Nombre, nivel 851 00:35:24,130 --> 00:35:26,949 Y posición en la que juega 852 00:35:26,949 --> 00:35:29,690 O sea, el nombre del tío, nick del videojugador 853 00:35:29,690 --> 00:35:31,409 Equipo en el que juega 854 00:35:31,409 --> 00:35:33,070 Nivel en el que está jugando 855 00:35:33,070 --> 00:35:33,809 Y la posición 856 00:35:33,809 --> 00:35:36,329 Ahora tendremos que complementar esto 857 00:35:36,329 --> 00:35:38,909 ¿De dónde? Pues de varios sitios 858 00:35:38,909 --> 00:35:41,829 Entonces, nivel y posición de jugador videojuego 859 00:35:41,829 --> 00:35:42,030 ¿No? 860 00:35:42,690 --> 00:35:44,489 Jugador videojuego 861 00:35:44,489 --> 00:35:47,010 Recordad que aquí es obligatorio un alias 862 00:35:47,010 --> 00:35:47,489 Siempre 863 00:35:47,489 --> 00:35:50,309 Entonces, nivel viene de jugador videojuego 864 00:35:50,309 --> 00:35:53,110 Y posición viene de jugador videojuego 865 00:35:53,110 --> 00:35:53,610 Vale 866 00:35:53,610 --> 00:35:56,230 Pero no solo de jugador videojuego 867 00:35:56,230 --> 00:35:58,150 Habrá que hacer un join 868 00:35:58,150 --> 00:35:58,789 ¿Verdad? 869 00:35:59,610 --> 00:36:01,530 Habrá que hacer un join ¿Con quién? 870 00:36:02,170 --> 00:36:04,650 Con jugador 871 00:36:04,650 --> 00:36:05,170 J 872 00:36:05,170 --> 00:36:07,170 Nick viene de 873 00:36:07,170 --> 00:36:10,389 El jugador, es una propiedad de jugador 874 00:36:10,389 --> 00:36:11,469 Join 875 00:36:11,469 --> 00:36:14,710 Y aquí hazme también 876 00:36:14,710 --> 00:36:16,230 Un join de 877 00:36:16,230 --> 00:36:17,750 Equipo 878 00:36:17,750 --> 00:36:19,789 Equipo 879 00:36:19,789 --> 00:36:22,510 Le tengo que poner el alias 880 00:36:22,510 --> 00:36:24,389 obligatorio y ahora me queda así 881 00:36:24,389 --> 00:36:26,469 vale, a ver 882 00:36:26,469 --> 00:36:37,630 bueno, me falta el web 883 00:36:37,630 --> 00:36:38,889 no, no, en los joins 884 00:36:38,889 --> 00:36:41,530 en los jv.jugadores 885 00:36:41,530 --> 00:36:41,889 j 886 00:36:41,889 --> 00:36:45,469 ah, jv 887 00:36:45,469 --> 00:36:47,530 join, ah, vale, vale, vale 888 00:36:47,530 --> 00:36:48,349 sí, sí, sí, sí 889 00:36:48,349 --> 00:36:51,269 sí, sí, sí, unerjoin, sí, sí, perdón 890 00:36:51,269 --> 00:36:52,170 estoy poniendo la 891 00:36:52,170 --> 00:36:54,309 JV jugador 892 00:36:54,309 --> 00:36:56,050 Sí, sí, sí 893 00:36:56,050 --> 00:37:02,300 Join 894 00:37:02,300 --> 00:37:04,320 Lo estoy poniendo porque va a multitabla 895 00:37:04,320 --> 00:37:06,300 Estoy mezclando las dos cosas, vale 896 00:37:06,300 --> 00:37:08,179 Join con 897 00:37:08,179 --> 00:37:11,099 JV 898 00:37:11,099 --> 00:37:12,280 Punto 899 00:37:12,280 --> 00:37:14,219 Es jugador, ¿verdad? 900 00:37:16,769 --> 00:37:17,510 Porque 901 00:37:17,510 --> 00:37:18,550 Y 902 00:37:18,550 --> 00:37:20,510 ¿Eh? 903 00:37:21,349 --> 00:37:22,829 Poniéndole el alias 904 00:37:22,829 --> 00:37:25,730 Y ahora aquí sería 905 00:37:25,730 --> 00:37:30,510 J.equipo 906 00:37:30,510 --> 00:37:32,429 Alias 907 00:37:32,429 --> 00:37:33,530 Vale 908 00:37:33,530 --> 00:37:35,570 Y ahora, where 909 00:37:35,570 --> 00:37:37,389 Jugador 910 00:37:37,389 --> 00:37:39,510 Le voy a coger de aquí, pero si no me voy a equivocar seguro 911 00:37:39,510 --> 00:37:41,170 Que hay que escribir mucho 912 00:37:41,170 --> 00:37:48,730 Donde el id de videojuego 913 00:37:48,730 --> 00:37:50,030 Sea el parámetro 914 00:37:50,030 --> 00:37:52,190 Que me están pasando a mí 915 00:37:52,190 --> 00:37:54,610 Recordad que dos puntos y el nombre 916 00:37:54,610 --> 00:37:56,550 Que a uno le dé la gana, cualquier nombre 917 00:37:56,550 --> 00:37:57,670 Es como la interrogación 918 00:37:57,670 --> 00:38:00,210 Entonces, el jugador videojuego 919 00:38:00,210 --> 00:38:04,030 O sea, el id es este 920 00:38:04,030 --> 00:38:06,190 El id es este 921 00:38:06,190 --> 00:38:08,690 Entonces a través de este id ya me voy arriba 922 00:38:08,690 --> 00:38:09,929 Con los join 923 00:38:09,929 --> 00:38:12,630 Y voy cogiendo 924 00:38:12,630 --> 00:38:14,289 El nombre de equipo 925 00:38:14,289 --> 00:38:16,650 El nombre de jugador 926 00:38:16,650 --> 00:38:18,309 El nick 927 00:38:18,309 --> 00:38:19,610 Del jugador 928 00:38:19,610 --> 00:38:21,010 Y el 929 00:38:21,010 --> 00:38:23,710 Y estos dos de jugador videojuego 930 00:38:23,710 --> 00:38:25,750 Vale, esta es la que manda en la cadena 931 00:38:25,750 --> 00:38:26,809 El jugador videojuego 932 00:38:26,809 --> 00:38:29,889 Y ahora, aquí había puesto además 933 00:38:29,889 --> 00:38:32,010 ordenar por posición, pero 934 00:38:32,010 --> 00:38:33,510 bueno, podemos ordenar o no. 935 00:38:34,590 --> 00:38:35,710 Venga, vamos a ponerle el order 936 00:38:35,710 --> 00:38:37,389 que está puesto aquí. 937 00:38:39,389 --> 00:38:39,869 Y aquí 938 00:38:39,869 --> 00:38:41,650 esto siempre hay que pensar con 939 00:38:41,650 --> 00:38:43,050 nombres de clases. 940 00:38:44,050 --> 00:38:44,610 Claro. 941 00:38:45,989 --> 00:38:47,190 No, no, no. Esto 942 00:38:47,190 --> 00:38:49,650 es ciego para el SQL completamente. 943 00:38:49,829 --> 00:38:51,789 O sea, es SQL 944 00:38:51,789 --> 00:38:53,630 pero piensa nombre de 945 00:38:53,630 --> 00:38:54,989 propiedad, nombre de clase. 946 00:38:55,630 --> 00:38:57,269 SQL está 947 00:38:57,269 --> 00:38:59,110 vale. 948 00:38:59,889 --> 00:39:15,630 Y ahora, esta es la clave. Vale, esta es la sentencia, creemos que está bien. Bueno, no sé si lo he adaptado al... Sí, se llaman así, ¿no? Nivel, W, videojuego, jugador. Si no, me va a decir, no encuentro el campo, no encuentro algo. 949 00:39:15,630 --> 00:39:17,809 y ahora aquí viene la clave 950 00:39:17,809 --> 00:39:19,309 que es recordar que en la query 951 00:39:19,309 --> 00:39:20,769 después de la coma hay que poner 952 00:39:20,769 --> 00:39:23,210 la clase a la que va a pertenecer 953 00:39:23,210 --> 00:39:24,010 lo que me devuelva 954 00:39:24,010 --> 00:39:27,389 pero lo que me devuelve no pertenece 955 00:39:27,389 --> 00:39:28,230 a ninguna clase 956 00:39:28,230 --> 00:39:30,409 no es jugador, no es un equipo 957 00:39:30,409 --> 00:39:32,530 entonces aquí no puedo poner jugador.class 958 00:39:32,530 --> 00:39:34,010 o equipo.class 959 00:39:34,010 --> 00:39:37,389 entonces para Java 960 00:39:37,389 --> 00:39:38,610 esto que es 961 00:39:38,610 --> 00:39:40,449 o para JPA esto que va a ser entonces 962 00:39:40,449 --> 00:39:42,150 un array de objetos 963 00:39:42,150 --> 00:39:45,349 como no hay una clase que case con esto 964 00:39:45,349 --> 00:39:47,170 Esto no son las propiedades de un jugador 965 00:39:47,170 --> 00:39:48,829 Esto no son las propiedades de un equipo 966 00:39:48,829 --> 00:39:51,130 Esto no es, como no hay una clase que case con esto 967 00:39:51,130 --> 00:39:53,590 Esto para mí va a ser un array de objetos 968 00:39:53,590 --> 00:39:59,789 ¿No te gustan los arrays? 969 00:40:02,730 --> 00:40:03,210 ¿Vale? 970 00:40:05,409 --> 00:40:06,349 No, hazlo 971 00:40:06,349 --> 00:40:13,219 Vale, a ver 972 00:40:13,219 --> 00:40:14,880 Sí, sin paréntesis, ¿verdad? 973 00:40:14,880 --> 00:40:19,460 Ah, sí, me he puesto el paréntesis ahí que no me gusta. 974 00:40:25,000 --> 00:40:26,239 Vale, entonces. 975 00:40:32,150 --> 00:40:37,449 Y ahora, el resultado es una lista de todos estos. 976 00:40:37,449 --> 00:40:40,469 Es una lista de todos estos. 977 00:40:42,690 --> 00:40:46,050 Una lista de a raíz de objetos. 978 00:40:46,050 --> 00:40:58,920 y me falta el get result list 979 00:40:58,920 --> 00:41:00,139 ahí 980 00:41:00,139 --> 00:41:01,980 vale 981 00:41:01,980 --> 00:41:04,119 y ahora ya los muestro 982 00:41:04,119 --> 00:41:06,900 y el return, me falta el return 983 00:41:06,900 --> 00:41:08,559 el para 984 00:41:08,559 --> 00:41:11,039 ah si, el fijar el parámetro, me falta el set 985 00:41:11,039 --> 00:41:13,659 parameter 986 00:41:13,659 --> 00:41:15,699 la posición 987 00:41:15,699 --> 00:41:17,480 Lo voy a llamar por el nombre 988 00:41:17,480 --> 00:41:18,400 Que me gusta más 989 00:41:18,400 --> 00:41:20,880 El parameter este 990 00:41:20,880 --> 00:41:23,480 Videojuego 991 00:41:23,480 --> 00:41:24,119 Id 992 00:41:24,119 --> 00:41:25,400 Vale 993 00:41:25,400 --> 00:41:28,280 Y get result 994 00:41:28,280 --> 00:41:31,039 Return result 995 00:41:31,039 --> 00:41:32,559 Por no ponerlo arriba y ya está 996 00:41:32,559 --> 00:41:38,000 Vale, entonces 997 00:41:38,000 --> 00:41:39,880 Ahora ya yo entro en el main 998 00:41:39,880 --> 00:41:41,659 Entro dentro de aquí 999 00:41:41,659 --> 00:41:43,199 Y se acabó, no pasa nada 1000 00:41:43,199 --> 00:41:46,210 Pero 1001 00:41:46,210 --> 00:41:49,110 Entonces 1002 00:41:49,110 --> 00:41:51,769 cada objeto de esta lista 1003 00:41:51,769 --> 00:41:52,929 es todo un paquete 1004 00:41:52,929 --> 00:41:55,949 es todo un paquete de NIC equipo a nivel y posición 1005 00:41:55,949 --> 00:41:59,349 cada uno de ellos 1006 00:41:59,349 --> 00:42:00,869 es un objeto 1007 00:42:00,869 --> 00:42:05,849 a ver, esto como es un SELE te da una lista de registros 1008 00:42:05,849 --> 00:42:07,670 cada registro 1009 00:42:07,670 --> 00:42:09,269 es un array de objetos 1010 00:42:09,269 --> 00:42:13,690 un registro es un array de objetos 1011 00:42:13,690 --> 00:42:15,570 y que tiene ese array de objetos 1012 00:42:15,570 --> 00:42:17,150 NIC equipo a nivel y posición 1013 00:42:17,150 --> 00:42:20,789 vale 1014 00:42:20,789 --> 00:42:29,969 Bueno, a ver, claro 1015 00:42:29,969 --> 00:42:30,849 Es un array de objetos 1016 00:42:30,849 --> 00:42:33,010 Es decir 1017 00:42:33,010 --> 00:42:35,449 Cada resultado de este select 1018 00:42:35,449 --> 00:42:37,710 Que tendrá muchos, por eso es una lista 1019 00:42:37,710 --> 00:42:39,170 Es un array 1020 00:42:39,170 --> 00:42:40,989 De objetos 1021 00:42:40,989 --> 00:42:42,210 Él lo mete en object 1022 00:42:42,210 --> 00:42:44,190 Porque lo que tú hayas hecho aquí 1023 00:42:44,190 --> 00:42:47,090 No sabe qué es, puede ser un string, puede ser un int 1024 00:42:47,090 --> 00:42:48,630 Puede ser a través de un objeto 1025 00:42:48,630 --> 00:42:49,610 Nick, por ejemplo 1026 00:42:49,610 --> 00:42:51,849 Es un string 1027 00:42:51,849 --> 00:42:54,630 Pero equipo es un objeto entero 1028 00:42:54,630 --> 00:42:56,909 Nivel es unid 1029 00:42:56,909 --> 00:42:58,050 Y posición es unid 1030 00:42:58,050 --> 00:43:00,949 Entonces dice, pues una raíz de objetos 1031 00:43:00,949 --> 00:43:01,989 Para cada 1032 00:43:01,989 --> 00:43:03,989 Elemento de la lista 1033 00:43:03,989 --> 00:43:07,250 Una raíz de object, porque lo que va a caer 1034 00:43:07,250 --> 00:43:07,989 Ahí dentro no lo sabe 1035 00:43:07,989 --> 00:43:10,070 Podrías poner equipo.class 1036 00:43:10,070 --> 00:43:11,929 O jugador.class 1037 00:43:11,929 --> 00:43:13,590 Claro, es lo que pondríamos 1038 00:43:13,590 --> 00:43:15,070 Y entonces aquí pondrías 1039 00:43:15,070 --> 00:43:16,650 Select equipo 1040 00:43:16,650 --> 00:43:24,869 pero 1041 00:43:24,869 --> 00:43:29,690 a ver es que igual 1042 00:43:29,690 --> 00:43:31,710 hemos puesto mal 1043 00:43:31,710 --> 00:43:33,570 quiero parar esto