2009-08-02 14 views
6

cuando ejecuto mis herramientas de hibernación lee de db y crea clases Java para cada tabla, y una clase java para claves primarias compuestas. eso es genial.Ejecución de la generación de anotación de herramienta de hibernación sin el atributo "catálogo"

el problema es esta línea

@Table(name="tst_feature" 
    ,catalog="tstdb" 
) 

mientras que se requiere el nombre de la tabla, el "catálogo" no se requiere atributo. veces quiero usar "tstdb", a veces quiero usar "tstdev"

pensé que la carne deshuesada fue elegido depende de la URL de conexión JDBC pero cuando cambio la URL de JDBC para indicar "tstdev", se sigue utilizando "tstdb"

así, sé lo que debe hacerse, simplemente no saben cómo se hace su mis opciones son

  • suprimir la generación del atributo "catálogo" Actualmente estoy haciendo esto manualmente (no muy productivo) O podría escribir un programa que analiza el archivo Java y quitar el atributo manualmente pero espero que no tengo a

O

  • encontrar una manera de contar hibernate para ignorar el atributo "catálogo" y usar el esquema que se especifica explícitamente. No sé la configuración exacta que tengo que cambiar para lograr esto, o incluso si la opción está disponible.

Respuesta

7

que debe seguir 3 pasos -

1) en la hibernate.cfg.xml, añadir esta propiedad

hibernate.default_catalog = MyDatabaseName 

(como se especifica en el post anterior)

2) En el hibernate.reveng.xml, agregue todos la tabla filtra así

table-filter match-name="MyTableName" 

(solo esto, sin nombre de catálogo aquí)

3) Regenerar código de hibernación

Usted no verá ningún nombre de catálogo en cualquiera de los archivos *.hbm.xml.

He utilizado Eclipse Galileo y Hibernate-3.2.4.GA.

1

Hay una personalización para la generación, que dirá qué tablas poner en qué catálogo.

Puede especificar el catálogo manualmente (en el archivo reveng, elemento <table>), o programáticamente (en su clase ReverseEngineeringStrategy personalizada si no recuerdo mal).

Además, recientemente tuve que modificar las plantillas de generación.

Consulte la documentación de referencia:

Disculpe, esto podría ser más preciso, pero ahora no tengo acceso a mi computadora de trabajo.

+0

elemento de tabla selecciona tablas de los catálogos, sí. pero eso no es lo que quiero. Quiero que la entidad que se genera sin el atributo "catálogo" si el atributo de catálogo está allí, no importa lo que mi URL JDBC es, no por ello deja apuntar al mismo esquema, Quiero ser capaz de cambiar esquema sin volver a generar las entidades. –

+0

Tomé un vistazo a los archivos FTL hay una línea que dice <#if clazz.table.catalog? Existe> , catálogo = "$ {} clazz.table.catalog" alguna idea sobre cómo hacerlo configuro esto como falso? –

+1

lo califiqué use xxx en su archivo hibernate.cfg.xml –

0

El catálogo de atributos es un atributo de "conexión" y debe especificarse en el archivo de configuración de "conexión" hibernate.cfg.xml y NO en un archivo de configuración de "datos" *.hbm.xml.

Genero código de hibernación mediante la tarea ant <hibernatetool> y pongo esta tarea de reemplazo después de la regeneración (reemplace el nombre de esquema con su base de datos).

<replace dir='../src' token='catalog="schema-name"' value=''> 

Por lo tanto, después de la generación, se ha eliminado el catálogo de atributos.

Esto es una solución alternativa, pero el código generado funciona en mi desarrollo en un entorno de producción con un nombre de esquema diferente.

Cuestiones relacionadas