hibernate实体映射自动将errorCode转成error_code到数据库查询问题
我的实体是:@Entity
@Table(name = "。。。。。", schema = "。。。。")
public class TUpcRemainMobile implements java.io.Serializable {
private Long id;
private String errorCode;
private String errorMes;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name = "id", unique = true, nullable = false)
public Long getId() {
return id;
}
@Column(name = "errorCode")
public String getErrorCode() {
return errorCode;
}
public void setErrorCode(String errorCode) {
this.errorCode = errorCode;
}
@Column(name = "errorMes")
public String getErrorMes() {
return errorMes;
}
}
数据库字段是:
id,errorCode,errorMes 其他一些字段。
我在用hibernate的createQuery去查询的时候出现如下错误:
Unknown column 'tupcremain0_.error_code' in 'field list'
看hibernate生成的sql语句是:
select tupcremain0_.id as id2_, tupcremain0_.error_code as error3_2_, tupcremain0_.error_mes as error4_2_ from ......
我明明在@Column注解中指明了映射成errorCode,为什么他会生成error_code?
hibernate entity --------------------编程问答-------------------- 问题已经解决,是hibernate会将@cloum中的大写字母转换成小写并在前面加下划线导致,这是我们将java编码规范带到数据库中导致的,mysql数据库是不区分大小写的。目前我的项目已经是上线了 ,不能随便改数据库,所以解决方案就是直接用jdbc,不然就得去改hibernate的源码。或者修改数据库,将字段名改成小写。
题外话,现在csdn论坛真的是很。。。,好几年前很简单很无聊的问题都能被人挖出来在回答,还回答的那么自大,哎~~~
--------------------编程问答-------------------- 是hibernate会将@cloum中的大写字母转换成小写并在前面加下划线导致?
这句话怪怪的,是生成的sql语句会有下划线。映射的东西是没有下划线的。
createQuery是面向对象的查询,查询的是实体。 --------------------编程问答-------------------- 是你的配置文件那里没有把hbm2ddl.auto属性的值设为update吧 --------------------编程问答--------------------
补充:Java , Web 开发