@Entity
@Table(name = "appsys_userinfo")
public class User extends GenericEntity {
private Integer token;
@Column(name = "ENDTIME")
private TimeStamp endTime;
@Column(name = "USERIP")
private String userIP;
@Column(name = "iflogin")
private String ifLogin;
@Column(name = "loginservice")
private String loginServer;
@Column(name = "USERID")
private String userId;
@Column(name = "PWD")
private String passWord;
@Column(name = "O_PHONE")
private String o_phone;
@Column(name = "H_PHONE")
private String h_phone;
@Column(name = "DMID")
private String dmid;
@Column(name = "DMMC")
private String dmmc;
@Column(name = "ZHIWEI")
private String zhiwei; @Column(name = "STARTTIME")
private TimeStamp startTime;
这上面是我的实体类表,
但是在向数据库传东西的时候变成了这样:。。
Hibernate: 
    insert 
    into
        appsys_userinfo
        (dmid, dmmc, end_time, h_phone, if_login, login_server, o_phone, pass_word, start_time, token, userip, user_id, zhiwei, id) 
    values
        (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
这些属性 有些 就突然多了根下划线。。为什么呢?。。

解决方案 »

  1.   

    你的实体类中的属性名称不要有大写字符,试试这样改下,如:
    @Column(name = "iflogin")
    private String ifLogin;
    改为:
    @Column(name = "iflogin")
    private String iflogin;
      

  2.   

    数据库里是不会分大小写的,关键是自己的实体映射。
    1、实体类属性改为小写:
    @Column(name = "iflogin")
    private String ifLogin;
    改为:
    @Column(name = "iflogin")
    private String iflogin;
    2、hibernate映射文件也要相应改掉
     <property name="iflogin" type="java.lang.String">
                <column name="IFLOGIN"  />
     </property>
      

  3.   

    我全改了 。。但是现在有提示这个错:
    Hibernate: 
        insert 
        into
            appsys_userinfo
            (dmid, dmmc, endtime, h_phone, iflogin, loginserver, o_phone, pwd, userid, userip, zhiwei, id) 
        values
            (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
    2011-05-25 10:27:41,813 [http-8080-5] WARN  [org.hibernate.util.JDBCExceptionReporter] - SQL Error: 8152, SQLState: 22001
    2011-05-25 10:27:41,813 [http-8080-5] ERROR [org.hibernate.util.JDBCExceptionReporter] - 将截断字符串或二进制数据。
    2011-05-25 10:27:41,816 [http-8080-5] ERROR [org.hibernate.event.def.AbstractFlushingEventListener] - Could not synchronize database state with session
    org.hibernate.exception.DataException: could not insert: [com.ccrise.ikjp.login.entity.User]
      

  4.   

    这已经不是hibernate的问题了,建议以下操作解决:
    1、检查你的数据库表字段长度、触发器等。
    2、将sql语句直接到数据库里执行检查。
    3、表存在问题,尝试重建表或改下表名重建
      

  5.   

    我找到原因了,加载下划线是由于hibernate的命名映射机制的问题 在naming**(具体的记不清楚了)里面可以修改映射机制,我这里出现问题的主要原因是在application.properties里面的update(自动创建表)没有设置对。