在我的公司,我们对表列有这个命名约定:
表: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接口上,我在配置列名时无法访问表名,所以我无法在列名前加上表名。
这有什么解决方案吗?
提前致谢。
答案 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;
}
};