Hibernate:基于表名的列名?

eol*_*ith 5 orm 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
}
Run Code Online (Sandbox Code Playgroud)

我想这样写我的班级:

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

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

    // etc
}
Run Code Online (Sandbox Code Playgroud)

...并使用 Hibernate NamingStrategy根据表名完成列名。我遇到的问题是,在 NamingStrategy 界面上,我在配置列名时无法访问表名,因此我无法在列名前加上表名。

有什么解决办法吗?

提前致谢。

Fir*_*iro 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;
    }
};
Run Code Online (Sandbox Code Playgroud)