当前位置: 代码迷 >> Java Web开发 >> 施用hibernate annotation @Column name 无效
  详细解决方案

施用hibernate annotation @Column name 无效

热度:3971   发布时间:2013-02-25 21:17:30.0
使用hibernate annotation @Column name 无效
现在在我数据库里面有一张表的字段是 createDate //创建时间
然后我实体类里面有一个属性是

Java code
@Column(name = "createDate")private Date createDate;    public Date getCreateDate() {        return this.createDate;    }    public void setCreateDate(Date createDate) {        this.createDate = createDate;    }

但是现在hibernate解析出来的sql语句是 select engineuser0_.create_date as create3_1_ 所以就报错列名“create_date”无效。
请问下为什么我已经指定了列名@Column(name = "createDate") 他还会给解析成create_date 为什么呢?哪里可以配置么?我用的是ssh。。

------解决方案--------------------------------------------------------
全世界搜create_date
------解决方案--------------------------------------------------------
尝试在方法中注解,不在字段注解看看
@Column(name = "createDate")
public Date getCreateDate() {
return this.createDate;
}

------解决方案--------------------------------------------------------
主要原因:程序和数据库中字段不匹配。
检查2点:1.程序的字段是否正确。
2.数据库中表的字段是否正确。
------解决方案--------------------------------------------------------
hibernate配置文件中不是定义了类与数据库字段的对应关系吗,看看是否匹配
------解决方案--------------------------------------------------------
@Column(name="haveBuyPeople")
public int getHaveBuyPeople() {
return haveBuyPeople;
}
要这样才行呢。注解写在Private不行。要写在get方法上面。然后name对应数据库的字段
------解决方案--------------------------------------------------------
试试在get方法上注解
------解决方案--------------------------------------------------------
探讨
继续求助。。。

------解决方案--------------------------------------------------------
Java code
@Column(name = "createDate") private Date createDate; public Date getCreateDate() { return this.createDate; } public void setCreateDate(Date createDate) { this.createDate = createDate; } 给LZ提供一个解决思路: 1. 将@Column(name = "createDate")改为:@Column(name = "create_Date")看出来sql是什么?2. 将private Date createDate改为:private Date createTime; 主要目的是改一下实体名,排除别重复现象。。,然后看一下出来的sql是什么?这样测试做三次:1.和2.步分开做。。。然后1.和2.一起做。。。分别比较sql,然后对比sql变化。。。
  相关解决方案