Foros del Web » Programación para mayores de 30 ;) » Java »

JPA Toplink y relaciones de tablas

Estas en el tema de JPA Toplink y relaciones de tablas en el foro de Java en Foros del Web. Hola. Compañeros voy a tratar d explicar lo q estoy tratando de hacer en un proyecto que desarrollo. Tengo que generar una tabla comparativa de ...
  #1 (permalink)  
Antiguo 01/10/2009, 18:12
 
Fecha de Ingreso: marzo-2009
Mensajes: 37
Antigüedad: 15 años, 1 mes
Puntos: 0
Pregunta JPA Toplink y relaciones de tablas

Hola.

Compañeros voy a tratar d explicar lo q estoy tratando de hacer en un proyecto que desarrollo.

Tengo que generar una tabla comparativa de precios por proveedor, para esto mi usuario cuenta con una Tabla llamada Requisición, la cual puede contener una o mas tablas comparativas, dicha tabla comparativa contendra los Items q son los q se tienen q checar por proveedor sus precios estos Item los quiero almacenar en la tabla Tabla_Comparativa_Detalle, y dichos Items se pueden comparar su valor entre 2 proveedores o N.. como no tenemos un numero fijo de proveedores a comparar estos datos los voy a almacenar en Costo_Tabla_Comparativa y esta hara referencia a el detalle d la tabla comparativa.

Tablas:

Requisicion
Id
.
.


Tabla_Comparativa
Id
Requisicion
.
.

Tabla_Comparativa_Detalle
Id
Tabla_Comparativa
.
.

Costo_Tabla_Comparativa
id
Tabla_Comparativa_Detalle
.
.

Todas mis entidades las tengo en un EJB y cuando lo quiero Desplegar en el servidor me tira el siguiente error:
Código PHP:
Exception DescriptionThe JoinColumns on the annotated element 
[private Entidades.TablaComparativa Entidades.TablaComparativaDetalle.tablaComparativa
from the entity class [class Entidades.TablaComparativaDetalle]is incomplete.
When the source entity class uses a composite primary keya
 JoinColumn must be specified 
for each join column using the JoinColumns
Both the name and the referenceColumnName elements must be specified in each such JoinColumn

Alguien a trabajado con relaciones de esta manera q me pueda apoyar un poco..?
  #2 (permalink)  
Antiguo 02/10/2009, 10:43
 
Fecha de Ingreso: marzo-2009
Mensajes: 37
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: JPA Toplink y relaciones de tablas

Hola.

Les pongo parte del codigo de las entidades:

Requisicion
Código:
    OneToMany(mappedBy = "requisicion")
    private Collection<TablaComparativa> tablaComparativaCollection;
TablaComparativa
Código:
    JoinColumn(name = "REQUISICION", referencedColumnName = "ID")
    ManyToOne
    private Requisicion requisicion;

ESTO LO COMENTO POR QUE NO LO ENTIENDO
    OneToMany(mappedBy = "tablaComparativa")
    private Collection<TablaComparativa> tablaComparativaCollection;
    JoinColumn(name = "TABLA_COMPARATIVA", referencedColumnName = "ID")
    ManyToOne
    private TablaComparativa tablaComparativa;

    OneToMany(mappedBy = "tablaComparativa")
    private Collection<TablaComparativaDetalle> tablaComparativaDetalleCollection;
TablaComparativaDetalle
Código:
    OneToMany(mappedBy = "tablaComparativaDetalle")
    private Collection<CostoTablaComparativa> costoTablaComparativaCollection;
    JoinColumn(name = "TABLA_COMPARATIVA", referencedColumnName = "ID")
    ManyToOne
    private TablaComparativa tablaComparativa;
CostoTablaComparativa
Código:
    JoinColumn(name = "PROVEEDOR", referencedColumnName = "RFC")
    ManyToOne
    private Proveedor proveedor;
    JoinColumn(name = "TABLA_COMPARATIVA_DETALLE", referencedColumnName = "ID")
    ManyToOne
    private TablaComparativaDetalle tablaComparativaDetalle;
Como se daran cuenta es una relacion de 4 tablas diferentes de forma lineal haber si me explico.
CostoTablaComparativa apunta a TablaComparativaDetalle esta apunta a TablaComparativa y esta a la de Requisicion.

Checando el log del servidor manda varios errores y son en este orden:
Código PHP:
Exception DescriptionThe JoinColumns on the annotated element [private Entidades.TablaComparativa Entidades.TablaComparativaDetalle.tablaComparativafrom the entity class [class Entidades.TablaComparativaDetalleis incompleteWhen the source entity class uses a composite primary keya JoinColumn must be specified for each join column using the JoinColumnsBoth the name and the referenceColumnName elements must be specified in each such JoinColumn
Código PHP:
Exception DescriptionThe JoinColumns on the annotated element [private Modelo.Entidades.TablaComparativa Modelo.Entidades.TablaComparativa.tablaComparativafrom the entity class [class Modelo.Entidades.TablaComparativais incompleteWhen the source entity class uses a composite primary keya JoinColumn must be specified for each join column using the JoinColumnsBoth the name and the referenceColumnName elements must be specified in each such JoinColumn
Código PHP:
Exception DescriptionThe JoinColumns on the annotated element [private Entidades.TablaComparativa Entidades.TablaComparativaDetalle.tablaComparativafrom the entity class [class Entidades.TablaComparativaDetalleis incompleteWhen the source entity class uses a composite primary keya JoinColumn must be specified for each join column using the JoinColumnsBoth the name and the referenceColumnName elements must be specified in each such JoinColumn
Código PHP:
Exception Description: [class Modelo.Entidades.Requisicionuses a non-entity [class Modelo.Entidades.TablaComparativa] as target entity in the relationship attribute [private java.util.Collection Modelo.Entidades.Requisicion.tablaComparativaCollection]. 


Todas mis entidades las genera Netbeans con la opción que trae y el codigo que no entiendo es el comentado de color rojo en la entidad TablaComparativa eso lo genera netbeans pero no entiendo por que o para que.

Ojala y me puedan apoyar un poco no veo el problema ya cheque la pagina de toplink pero no se cual sea el problema.
  #3 (permalink)  
Antiguo 02/10/2009, 11:35
Avatar de dackiller  
Fecha de Ingreso: septiembre-2003
Ubicación: The Matrix
Mensajes: 341
Antigüedad: 20 años, 7 meses
Puntos: 4
Respuesta: JPA Toplink y relaciones de tablas

Bueno, de verdad te comento que a mi no me fue bien, gaste muchisimo tiempo en entender su funcionamiento y además tuve muchos problemas para relacionar tablas...

Yo hice un pequiñito sistema para la facturación de mi compañia y te digo que fue un dolor de cabeza la relación de tablas.

Actualmente estoy usando hibernate + Plugin / eclipse... MUY BUENO, solo tuve que crear las claves foraneas en Mysql y eclipse + Plugin de Hibernate hizo el resto.

Luego exporte a *.jar y listo lo agregue al proyecto Netbeans.

En fin mi sugerencia es usa hibernate ya que se encuentra mucha más información.

Saludos
__________________
--
NOTA: Si haz conseguido la solución a tu problema, por favor edita el titulo del tema colocando el prefijo [SOLUCIONADO], para que otros usuarios puedan encontrar soluciones más rápido.
  #4 (permalink)  
Antiguo 02/10/2009, 12:03
 
Fecha de Ingreso: marzo-2009
Mensajes: 37
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: JPA Toplink y relaciones de tablas

Cita:
Iniciado por dackiller Ver Mensaje
Bueno, de verdad te comento que a mi no me fue bien, gaste muchisimo tiempo en entender su funcionamiento y además tuve muchos problemas para relacionar tablas...

Yo hice un pequiñito sistema para la facturación de mi compañia y te digo que fue un dolor de cabeza la relación de tablas.

Actualmente estoy usando hibernate + Plugin / eclipse... MUY BUENO, solo tuve que crear las claves foraneas en Mysql y eclipse + Plugin de Hibernate hizo el resto.

Luego exporte a *.jar y listo lo agregue al proyecto Netbeans.

En fin mi sugerencia es usa hibernate ya que se encuentra mucha más información.

Saludos
Gracias por tu respuesta te agradezco mucho...
Mi proyecto ahorita se encuentra ya funcionando pero sin el modulo que comento una opción seria Utilizar Hibernate pero cuando inicie se me iso un poco complicado no logre entender bien su funcionamiento lo que utilizo en mi proyecto es Netbeans, GlassFish para los EJB y la aplicación, JSF con ICEfaces para la presentación, y Firebird 2 para la db... Como momentas igual tengo muchos problemas con las relacionespero cuando son asi como las q tengo y si yo quito la ultima tabla funciona bien pe ro entonces mi modelo de datos estaria imcompleto y mal hecho.

Si tienes información de Hibernate que pudieras proporcionar para iniciar rapido o algun buen libro que recomendar te lo agradeceria mucho por que ya tengo rato con este problema y tengo que entregar el modulo en unos dias... y si esto no queda pues voy a tener que cambiar..

Saludos...
  #5 (permalink)  
Antiguo 02/10/2009, 18:09
 
Fecha de Ingreso: marzo-2009
Mensajes: 37
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: JPA Toplink y relaciones de tablas

Hola de nuevo...

Este Problema recuerdo q ya me habia pasado hace unos dias con otras tablas y lo que hice fue quitar la ultima tabla y todo funciono eso me iso hacer d forma un poco incorrecta mi modelo de datos...

Esta vez sucedio exactamente el mismo tipo de error.. todo lo ya antes comentado pero esta vez no podia presindir de ninguna de las tablas y afortunadamente me di cuenta que es lo que esta mal...

Como les comente todas mis entidades las genera el Netbeans y el problema es que en el dbschema que genera el netbeans se creaba la TablaComparativa con campos que yo nunca genere por ejemplo el campo Id lo generaba 2 veces, y otro campo llamado igual que la tabla en este caso TablaComparativa por eso no entendia lo que generaba el netbeans y puse de color Rojo en un Post anterior... Esto hacia que todo estuviera mal...

Cuando me di cuenta de eso cheque las tablas en mi Db y esos campos no aparecian.. elimine las tablas las volvi a generar 2 veces mas y generaba todo de nuevo y esos campos fantasmas seguian apareciendo en el dbschema que genera el netbeans., lo ultimo que hice fue Cambiarle el nombre a mis tablas quedando como Cotizacion, CotizacionDetalle, y CostoCotizacion entonces mi modelo de datos quedo como yo queria y ahora si no me marca ningun error al implementar mi EJB en el servidor... cheque el dbschema que genera el netbeans y efectivamente ahora si estan solo los campos que yo tengo y mis tablas en la db...

Ahora entonces quedo mi modelo de la siguiente manera:
Requisicion
Cotizacion
CotizacionDetalle
CostoCotizacion


Con todo esto entonces el problema queda resuelto los campos fantasmas no se por que o de donde salieron.

Gracias a dackiller por su sugerencia la tomare en cuenta en proyectos futuros y toda la información de Hibernate es Bienvenida...
  #6 (permalink)  
Antiguo 24/11/2010, 09:02
 
Fecha de Ingreso: noviembre-2010
Mensajes: 5
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: JPA Toplink y relaciones de tablas

Para alguien a que tenga esta problema, a mi me paso algo parecido, pero era porque se me escapo algo en el modelo ER, por ejemplo, supongamos que tenia la tabla items_factura con una llave primaria compuesta por id_producto e id_factura. Pero habia otra tabla que necesitaba el id del item (es solo un ejemplo), así que solo la relacione con el id_factura que estaba en la tabla items_factura. Luego de revisar bien mi diagrama lo que hice fue agregar una columna id en la tabla item_factura y ese mismo id lo usaba para los fk....
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:46.