2011-04-26 9 views
8

¡Estoy intentando construir una Play! aplicación ejecutándose contra una base de datos existente donde todas las columnas tienen caracteres de subrayado para separar las palabras. Esto significa que tengo que poner una anotación @Column en cada campo para especificar un nombre diferente. ¿Hay alguna forma de jugar? usar guiones bajos por defecto?¿Hay alguna manera de hacer que Play framework y JPA usen guiones bajos en los nombres de las columnas?

+0

Debe insertar guiones ¿basado en que? – Thomas

+0

las palabras están separadas por guiones bajos en lugar de camel case – Aaron

Respuesta

14

Si Play utiliza Hibernate, como sugieren las otras respuestas, tendrá que implement a custom NamingStrategy.

Aquí hay una NamingStrategy ejemplo que convierte todos los nombres de las columnas de camello inferior a minúsculas con guiones bajos, usando Guava:

public class CustomNamingStrategy extends ImprovedNamingStrategy { 

    private static final long serialVersionUID = -306957679456120781L; 

    @Override 
    public String columnName(final String columnName) { 
     return CaseFormat.LOWER_CAMEL 
         .to(CaseFormat.LOWER_UNDERSCORE, columnName); 
    } 
} 

Configurar así:

añadir la siguiente línea a aplicación .conf para configurar el NamingStrategy

hibernate.ejb.naming_strategy=<your naming strategy classname>

Referencia:

+1

AFAIK ImprovedNamingStrategy hace precisamente eso. Convierte a subrayado minúsculo +. Entonces, solo tienes que configurarlo en ImprovedNamingStrategy. +1 para una buena respuesta de todos modos;) – Bogdan

+0

@Bogdan a) gracias! b) cierto, no verificó eso. Pero francamente: la forma de Guava parece más efectiva que la forma de Hibernate, así que esto en realidad puede ser una mejora sin embargo :-) –

+1

¡Eso funciona genial! ¡Gracias! – Aaron

0

Bueno, si leo el documento correctamente, el marco de juego está utilizando Hibernate como la implementación de JPA. AFAIK, no hay forma de cambiar la denominación estándar de Hibernate, por lo que tendría que agregar las anotaciones o proporcionar los nombres de las columnas en el archivo XML de asignación.

+0

Parece que la respuesta de @SeanPatrickFloyd está funcionando (de acuerdo con el OP y otras preguntas que vi en SO). ¿Le importaría editar/eliminar su respuesta? mejor que obtener votos a la baja y más claro para otros lectores! – Stefano

1

La solución dada funciona muy bien, pero como st En los comentarios, ImprovedNamingStrategy hace eso, por lo que no es necesario usar guayaba.

Una mejora nombrar estrategia que prefiere guiones incrustados a mixtas nombres de los casos

Usted puede simplemente añadir hibernate.ejb.naming_strategy=org.hibernate.cfg.ImprovedNamingStrategy en su application.conf (Probado en Juego! Marco 1.2.5)

Cuestiones relacionadas