hibernate 自动建表问题
用的jpa的注解,@Column(name = "`userId`"),为什么生成的表的字段就成了user_id了,怎么让生成userId
[最优解释]
NamingStrategy这个策略会把大写转成小写并且前加_为了骗过他
@Column(name="userid")这么写。数据库的userId和userid都是一样的。而且hibernate在发sql的时候也是都转换成小写的。
[其他解释]
简单来说,用ImprovedNamingStrategy.
但是这个类默认的NamingStrategy是return addUnderscores(XXXName);XXX可以是table,或者column等等。所以需要写个新类继承一下覆盖原来的方法
如果如lz所说就用原来的名字,也就很省事了:
public class YourNamingStrategy extends ImprovedNamingStrategy {
//以下方法全部可以自定义
public String classToTableName(String className) {
return StringHelper.unqualify(className);
}
public String propertyToColumnName(String propertyName) {
return propertyName;
}
public String tableName(String tableName) {
return tableName;
}
public String columnName(String columnName) {
return columnName;
}
public String propertyToTableName(String className, String propertyName) {
return classToTableName(className) + '_'
+ propertyToColumnName(propertyName);
}
}
Configuration cfg = new Configuration();
cfg.setNamingStrategy( new MyNamingStrategy() );
SessionFactory sessionFactory sf = cfg.configure().buildSessionFactory();