Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
3
respuestas

[Duda] No comprendi bien la relacion entre entidades

Tratare de ser lo mas claro con mi duda.

Lo que entiendo que se quiere hacer es una entidad de unión (items_pedido) que relacione las entidades "pedidos" y "productos", esta entidad de union no solo va a tener los campos "id_pedido" y "id_producto" sino otros adicionales y es por esto que no se usa la etiqueta @ManyToMany y @JoinTable en la entidad pedido hacia la entidad producto.

Sino que para crear esta entidad de unión con los campos que se quieran se crea esta entidad desde una clase (ItemsPedido). Desde esta entidad se le crean los atributos adicionales que se quieren (id, precio_unitario, cantidad) y se hace una relación @ManyToOne hacia las entidades que se quieren relacionar.

Lo que no logro entender bien es por que en la entidad "Pedido" se agrega la etiqueta @OneToMany(mappedby="pedido") y esto deja el diagrama entidad relación como lo muestra el instructor al principio. Y por que esto no se hace también en la entidad "Producto"? Ademas, por que esto no hace que se genere un atributo en la entidad "Pedido" ya que básicamente se esta declarando un atributo lo que representa un campo o columna del atributo? O si esta creando este atributo?

3 respuestas

¡Hola Daniel!

Entiendo tu duda sobre la relación entre entidades en Java y JPA. En cuanto a la entidad de unión, es correcto que se utiliza cuando se necesita agregar información adicional a la relación entre dos entidades. En este caso, la entidad "ItemsPedido" se crea para agregar información como el precio unitario y la cantidad.

En cuanto a la etiqueta "@OneToMany(mappedBy="pedido")" en la entidad "Pedido", esto se utiliza para indicar que la relación entre "Pedido" y "ItemsPedido" es de uno a muchos, es decir, que un pedido puede tener varios items. La etiqueta "mappedBy" indica que la relación está mapeada por el atributo "pedido" en la entidad "ItemsPedido". Esto significa que la relación está definida en la entidad "ItemsPedido" y no en la entidad "Pedido".

En cuanto a la entidad "Producto", si no se necesita agregar información adicional a la relación entre "Producto" y "ItemsPedido", no es necesario crear una entidad de unión. En este caso, se puede utilizar la etiqueta "@ManyToMany" y "@JoinTable" en la entidad "Pedido" hacia la entidad "Producto".

Es importante tener en cuenta que la etiqueta "@OneToMany(mappedBy="pedido")" no crea un atributo en la entidad "Pedido", sino que indica la relación con la entidad "ItemsPedido". Si necesitas más información sobre cómo se crea la relación entre entidades en Java y JPA, no dudes en preguntar.

¡Espero haber ayudado y buenos estudios!

Hola, yo también tengo una duda sobre este tema, no logro entender, este items_pedido se puede decir que sale de la relación muchos a muchos entre pedidos y producto, si es así, también se debe agregar en la función agregarItems el producto ?

¡Hola!

En cuanto a tu duda, en realidad la entidad "ItemsPedido" se crea para agregar información adicional a la relación entre "Pedido" y "Producto". Esta entidad no reemplaza la relación muchos a muchos entre "Pedido" y "Producto", sino que se utiliza para agregar información adicional a esa relación.

En cuanto a la función "agregarItems", en ella se deben agregar los items que corresponden a la relación entre "Pedido" y "Producto". Esto se hace creando un nuevo objeto "ItemsPedido" y estableciendo los valores correspondientes a los campos de la entidad. Luego, se agrega ese objeto a la lista de items en la entidad "Pedido". No es necesario agregar el producto en la función "agregarItems", ya que la relación entre "Pedido" y "Producto" se establece a través de la entidad "ItemsPedido".

Espero que esto haya aclarado tu duda. Si necesitas más información o tienes alguna otra pregunta, no dudes en preguntar.