我的实体是:
@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?
hibernateentity

解决方案 »

  1.   

    问题已经解决,是hibernate会将@cloum中的大写字母转换成小写并在前面加下划线导致,这是我们将java编码规范带到数据库中导致的,mysql数据库是不区分大小写的。目前我的项目已经是上线了 ,不能随便改数据库,所以解决方案就是直接用jdbc,不然就得去改hibernate的源码。或者修改数据库,将字段名改成小写。题外话,现在csdn论坛真的是很,好几年前很简单很无聊的问题都能被人挖出来在回答,还回答的那么自大,哎~~~
      

  2.   

    是hibernate会将@cloum中的大写字母转换成小写并在前面加下划线导致?
    这句话怪怪的,是生成的sql语句会有下划线。映射的东西是没有下划线的。
    createQuery是面向对象的查询,查询的是实体。
      

  3.   

    是你的配置文件那里没有把hbm2ddl.auto属性的值设为update吧