5

私の会社では、テーブルの列に次の命名規則があります。

表: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
}

クラスを次のように書きたいと思います。

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

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

    // etc
}

...そして Hibernate NamingStrategyを使用して、テーブル名に基づいて列名を完成させます。私が抱えている問題は、NamingStrategy インターフェイスで、列名を構成しているときにテーブル名にアクセスできないため、列名にテーブル名のプレフィックスを付けられないことです。

これに解決策はありますか?

前もって感謝します。

4

1 に答える 1

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;
    }
};
于 2012-06-08T08:52:03.860 に答える