Hibernate:基于表名的列名?

时间:2012-06-04 07:16:07

标签: hibernate orm

在我的公司,我们对表列有这个命名约定:

表: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接口上,我在配置列名时无法访问表名,所以我无法在列名前加上表名。

这有什么解决方案吗?

提前致谢。

1 个答案:

答案 0 :(得分: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;
    }
};