2011-10-07 19 views
5

La mia strategia di denominazione in sospensione era quella predefinita: EJB3NamingStrategy. Quindi i nomi dei campi e dei tavoli erano in camelcase. L'ho cambiato in ImprovedNamingStrategy per avere il snakecase.EJB3NamingStrategy vs MigliovedNamingStrategy Denominazione delle chiavi esterne

Ma le mie chiavi esterne non includono il nome della chiave primaria dell'entità referenziata nel nome.

Esempio:

Tabella 1: id nome

Con EJB3NamingStrategy i campi table2 saranno:

table2: id table1_id

ma con ImprovedNamingStrategy i campi Table2 sarà : table2: id table1

C'è un modo per avere _id con ImprovedNamingStrategy. Non capisco perché hibernate si comporti in modo diverso perché il metodo logicalCollectionColumnName in entrambe le strategie è identico.

risposta

4

Estendere il miglioramento di NamingStrategy e personalizzarlo, forse l'implementazione iniziale di ImprovedNamingStrategy si è sbagliata e quindi non è stato possibile correggerla in quanto avrebbe compromesso la compatibilità con le versioni precedenti.

+0

il parametro ricevuto in logicalCollectionColumnName contiene già column_id se uso EJB3NamingStrategy ma se uso ImprovedNamingStrategy il parametro non lo riceve. Non capisco perché. Questo metodo è chiamato da qualche altra parte nel codice. – Mike

+0

Sì, la tua scrittura, non stavo cercando il metodo giusto. La parte id è commentata – Mike

3

Questo problema è stato risolto nella versione di avvio 1.2.7.RELEASE. Il riferimento di questo thread è anche specificato nella documentazione del pacchetto jpa hibernate. firma classe come segue:

package org.springframework.boot.orm.jpa.hibernate; 

public class SpringNamingStrategy extends ImprovedNamingStrategy {} 
Problemi correlati