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 回答