tools tablas para mapear instalar how generate engineering descargar create cfg mysql hibernate reverse-engineering myeclipse

mysql - para - mapear tablas hibernate eclipse



¿Por qué la ingeniería inversa de Hibernate de MyEclipse crea múltiples clases al mapear ciertas tablas? (5)

Tengo una tabla en mi base de datos MYSQL que no tiene una clave principal, pero tiene una clave única en dos columnas. Al utilizar la herramienta de ingeniería inversa Hibernate de MyEclipse para crear una asignación para esa tabla, genera dos clases, una para el nombre de la tabla y otra con el sufijo "Id". Parece que la mayoría de los métodos útiles terminaron en la clase Id, por lo que parece que es la que crearías y guardarías para conservar los datos. Puedo apreciar el hecho de que la clase Id se crea para representar una fila única en el objeto tabla / mapeado, pero ¿de qué sirve dividir esto en dos clases, y cuál es el uso del no ID? ¿clase mezclada?

Mi colega argumenta que puede lograr lo mismo con una sola clase y se burla de utilizar la ingeniería inversa para estas tablas que no tienen una clave principal. Yo, por otro lado, supongo que los desarrolladores de MyEclipse son mucho más inteligentes que yo y que hay una muy buena razón para hacerlo de esta manera. ¿Esta ahí?


Usted asume demasiado mi amigo. Esas herramientas no son en realidad del equipo MyEclipse, es del proyecto Hibernate Tools (JBoss, los desarrolladores de Hibernate).

Esta es una herramienta programática que no puede adivinar todo. Es bastante bueno para cosas simples bien anotadas, pero a veces, no generará exactamente lo que necesita.

La clase de id es usualmente necesaria para representar una clave primaria compuesta (una clave que usa múltiples atributos). Utiliza las clases de componentes Concepto de Hibernate.

También es posible ajustar un poco las opciones del generador.

En su caso, sería mejor hacer lo que dicen sus colegas. Crea tus propias clases de entidad.


En tu archivo de ingeniería inversa:

<table schema="public" name="yourtable"> <primary-key> <!-- generator may not be necessary for mysql --> <generator class="increment"></generator> <key-column name="column_name_of_primary_key" /> </primary-key> </table>


Tuve un problema similar al ejecutar la herramienta en Eclipse contra una instancia de teradata. Tenía varios puntos de vista para invertir, y estaban en un esquema. Obtenía la clase AcxiomDataId generada con esto:

<table catalog=".*" schema="U01TKE_GRPR_RADMT_VW" name="F_ACXM_MBR" class="AcxiomData"> <primary-key> <generator class="increment"></generator> <key-column name="MBR_UNIQ_KEY" property="memberUniqKey" /> </primary-key> </table>

Pero al eliminar los atributos de esquema y catálogo del elemento de tabla, no obtuve la clase AcxiomDataId:

<table name="F_ACXM_MBR" class="AcxiomData"> <primary-key> <generator class="increment"></generator> <key-column name="MBR_UNIQ_KEY" property="memberUniqKey" /> </primary-key> </table>

No tengo idea de por qué es eso.


Debes ingresar en yout db y verificar si ya has configurado un campo como clave principal, luego el archivo de ingeniería inversa de hibernación, ya no haces clases múltiples.


Me enfrento al mismo problema. Creo que cuando no tienes ninguna clave en la tabla, genera dos clases. De lo contrario, si tiene una clave en la tabla, genera solo una.

Al menos para mí después de agregar una clave principal en la tabla, está generando solo una clase que representa la tabla. Si elimino la clave primaria, genera dos clases.

Viejo hilo, pero pensé que era útil para alguien.