2012-06-04 6 views
4

В моей компании, мы имеем это соглашение об именах для столбцов таблицы:Hibernate: имена столбцов на основе имени таблицы?

Таблица: TCARS Колонки: TCARS_ID, TCARS_BRAND_ID, TCARS_MODEL_ID ... и т.д.

я в настоящее время этот класс сущностей:

@Table(name="TCARS") 
public class CarEntity { 
    @Column(name="TCARS_ID") 
    private int id; 

    @Column(name="TCARS_BRAND_ID") 
    private int brandId; 

    // etc 
} 

I хотел бы написать свой класс следующим образом:

@Table(name="TCARS") 
public class CarEntity { 
    @Column(name="ID") 
    private int id; 

    @Column(name="BRAND_ID") 
    private int brandId; 

    // etc 
} 

... и использовать Hib ernate NamingStrategy, чтобы заполнить имена столбцов на основе имени таблицы. Проблема в том, что в интерфейсе NamingStrategy я не могу обращаться к именам таблиц, пока я настраиваю имя столбца, поэтому я не могу префикс имен столбцов с именем таблицы.

Есть ли какое-либо решение этого?

Заранее спасибо.

ответ

0

NHibernate имеет событие BeforeBind в классе конфигурации, возможно, Hibernate.

// pseudocode 
Hibernate.Cfg.Configuration config; 

config.BeforeBindMapping + eventhandler 
{ 
    HbmClass c = RootClasses[0]; 

    foreach(IColumnsMapping hascolumns in c.Items.OfType<IColumnsMapping>()) 
    { 
     hascolumns.Columns[0].Text = c.Table.Name + hascolumns.Columns[0].Text; 
    } 
}; 
+0

К сожалению, я не нашел ничего похожего на PreBindMapping в спящем режиме. Спасибо, в любом случае! – eolith

Смежные вопросы