收录日期:2021/01/18 21:06:55 时间:2016/07/18 05:54:06 标签:Web 开发
错误提示:

Hibernate: insert into telecom.admins (name, loginname, loginpassword, phone, email, enrolldate) values (?, ?, ?, ?, ?, ?)

Exception in thread "main" org.springframework.jdbc.UncategorizedSQLException: Hibernate operation: could not insert: [com.tantan.ssh.domain.Admin];SQL state [01004]; error code [0]; 

Caused by: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data truncated for column 'enrolldate' at row 



SQL语句:


create table admins(
id int primary key auto_increment,
name varchar(20),
loginname varchar(20) unique,
loginpassword varchar(20),
phone varchar(20),
email varchar(30),
enrolldate date
)type=InnoDB default charset=utf8;




Java测试代码:


public void testSave(){
Admin admin=new Admin();
admin.setName("tantan");
admin.setLoginname("longling");
admin.setLoginpassword("longling");
admin.setEmail("tantanqin2006@126.com");
admin.setPhone("13594693567");
//字符编码问题
admin.setEnrolldate(new Date());

ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
AdminDao dao=(AdminDao) context.getBean("AdminDao");
dao.save(admin);
}



Admin.hbm.xml配置文件:

<hibernate-mapping package="com.tantan.ssh.domain">
    <class name="Admin" table="admins" catalog="telecom">
        <id name="id" type="java.lang.Integer">
            <column name="id" />
            <generator class="identity"></generator>
        </id>
        <property name="name" type="java.lang.String">
            <column name="name" length="20" />
        </property>
        <property name="loginname" type="java.lang.String">
            <column name="loginname" length="20" unique="true" />
        </property>
        <property name="loginpassword" type="java.lang.String">
            <column name="loginpassword" length="20" />
        </property>
        <property name="phone" type="java.lang.String">
            <column name="phone" length="20" />
        </property>
        <property name="email" type="java.lang.String">
            <column name="email" length="30" />
        </property>
        <property name="enrolldate" type="java.util.Date">
            <column name="enrolldate" length="50" />
        </property>
    </class>
</hibernate-mapping>





数据库字符集:

mysql> show variables like '%char%';
+--------------------------+----------------------------------------------------
-----+
| Variable_name            | Value
     |
+--------------------------+----------------------------------------------------
-----+
| character_set_client     | utf8
     |
| character_set_connection | utf8
     |
| character_set_database   | utf8
     |
| character_set_filesystem | binary
     |
| character_set_results    | utf8
     |
| character_set_server     | utf8
     |
| character_set_system     | utf8
     |
| character_sets_dir       | C:\Program Files\MySQL\MySQL Server 5.1\share\chars
ets\ |
+--------------------------+----------------------------------------------------
-----+
8 rows in set (0.00 sec)

我用的是MySQL 5.1,谁能帮我分析错在哪儿了?不胜感谢!


该回复于2009-11-05 09:21:00被版主删除
数据库字段 enrolldate date    
改为 enrolldate datetime 类型
java的date用sql包下的Date
Date类型换下java.sql.Date;
           
该回复于2009-11-12 09:48:18被版主删除
时间类型错误,java中的date需要转换处理,还有mysql中一般用datetime类型,只要你确认是时间字段出错。
插入日期的时候要用''单引号引起来的 
Timestamp time = new Timestamp(new java.util.Date().getTime()); 
String now = time.toString().substring(0, 19); 
util.Date对应的是DateTime类型。date是只有日期的
引用 8 楼 sangshusen_1988 的回复:
util.Date对应的是DateTime类型。date是只有日期的

同意....
数据库字段 enrolldate date    
改为 enrolldate datetime 类型




试了,非常正确,可以解决问题。谢谢。
修改此字段sql 语句为

    alter table admins change column enrolldate enrolldate datetime;

请高手帮心修改以下语句 这两个正则表达式有什么区别? 求真正的验证(中文,字母,数字,下划线)的正则表达式,同时要屏蔽空格和特殊字符,看了一下,全部不行 hosts.allow启用的名称是在哪里定义的。比如:sshd 、in.telnetd等。 Fckeditor直接输入就不乱码,从word粘贴就乱码,咋整 谁帮忙做个题目啊~~~ 怎样同时操作多个ACESS数据库?使用MFC fastreport如何定义一个系统函数和变量 怎么利用GetModuleFileName函数从进程ID获取路径和程序名 执行计划图上的概念 关于插入WEB 浏览器 傲笑小人,飘然而去 考研还是工作? 高手帮忙看下 final修饰的变量,方法为什么比普通变量,方法效率要高?? frReport1的标题如何改写呀 这条语句哪里错了,怎么改? 有关webBrowser开发的特殊问题,高分悬赏!!!! 关于ref 押宝又输了~!! 用一个属性是text的文本框,里面写上汉字;然后扑获鼠标事件了后,把这个文本框隐藏,在同一位置显示一个属性为password的文本框 怎么获取Repeater 或 DataList的当前页引索 关于进程的问题 服务器上不安装WORD 怎么样创建word文件(C#) 如果用url传递的参数值里含&怎么来处理? 转让编程书籍,5折,合肥地区 java有没有像php那样开源的blog bbs cms比较好的系统?! css框架推荐下 DropDownList 导出DLL整个类和单独导出类函数有何区别?