错误提示: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("[email protected]");
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,谁能帮我分析错在哪儿了?不胜感谢!
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("[email protected]");
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,谁能帮我分析错在哪儿了?不胜感谢!
解决方案 »
- Filter
- 如何把下面的代码写成一个方法
- 求助:if(nationoption!="" && nationoption!=null)这句有用吗
- 能否通过request.getHeader的方法获得flash链接的来访者地址?
- 如何在JSP中实现一个类似于VC中的TABCONTROL 的页面?
- tomcat 不能解析我的javabean?????????
- 一个运行javabean的问题
- 通过jdbc读取5万条数据就不能成功了,有什么好的办法的。
- jsp中怎样生成静态页面(100分)
- 54sunboy舍我其谁,请进
- java中调用sql
- jdk+MyEclipse+tomcat 安装过程tomcat的路径怎么设置??
改为 enrolldate datetime 类型
Timestamp time = new Timestamp(new java.util.Date().getTime());
String now = time.toString().substring(0, 19);
改为 enrolldate datetime 类型
试了,非常正确,可以解决问题。谢谢。