日期:2014-05-16  浏览次数:20483 次

存入数据库的Date类型只有年月日,没有时分秒的原因和解决办法

问题:存入数据库的Date类型只有年月日,没有时分秒


我尝试过几种方式,结果都是年月日,明明有些地方可以有时分秒...


后来想到,所有和时间有关的地方,有一个地方我没有去注意。我是用jboss的hibernate插件生成的对象和hbm.xml配置文件,虽然我配置了主键的类型,但是其他字段我都用的默认的,经过检查hbm.xml文件,发现一个问题。


原因:hibernate在生成该配置文件的时候,使用的都是基本类型。


String类型写的不是java.lang.String而是string

Date类型写的不是java.util.Date而是date

其他类型都是这样

(这个date,string看着很奇怪,不知道来自那里..可能是hibernate?)

解决:瞬间发现问题,修改成正确的类型,重试发现没问题了。


以前用myeclipse的时候,没有手动配置过hibernate插件的配置文件,都是直接生成。使用Eclipse+插件,没想到需要自己手动配置那么多的内容。



附上一个配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-reverse-engineering PUBLIC 
"-//Hibernate/Hibernate Reverse Engineering DTD 3.0//EN" 
"http://hibernate.sourceforge.net/hibernate-reverse-engineering-3.0.dtd" >

<hibernate-reverse-engineering>

	<table-filter match-name="AC18" />
	<table name="AC18">
		<primary-key>
			<key-column name="TEMPID" type="java.lang.Long"></key-column>
			<key-column name="ORDNUM" type="java.lang.Long"></key-column>
		</primary-key>
		<column name="AAA027" type="java.lang.Long"></column>
		<column name="AAE002" type="java.lang.Long"></column>
		
		<column name="AAC002" type="java.lang.String"></column>
		<column name="AAC003" type="java.lang.String"></column>
		<column name="FLAG" type="java.lang.String"></column>
		<column name="BZH001" type="java.lang.String"></column>
		<column name="CONTENT" type="java.lang.String"></column>
		<column name="ERRMSG" type="java.lang.String"></column>
		<column name="LOGONNAME" type="java.lang.String"></column>
		<column name="FUNCTIONID" type="java.lang.String"></column>
		<column name="SAVE" type="java.lang.String"></column>
		<column name="SAVEUSER" type="java.lang.String"></column>
		<column name="AAA111" type="java.lang.String"></column>
		
		<column name="AAC033" type="java.util.Date"></column>
		<column name="SAVETIME" type="java.util.Date"></column>
	</table>
</hibernate-reverse-engineering>