在我的hibernate-4实体中,我使用推荐的
jadira usertypes映射joda-time
DateTime属性:
@Entity
@Table(name="timing")
public class TimingEntity {
...
@Basic(optional=false)
@Column(name="moment")
@Type(type="org.jadira.usertype.dateandtime.joda.PersistentDateTime")
public DateTime getMoment() {
...
我的数据库是MySQL.将hibernate属性hbm2ddl.auto设置为创建值,我在我的计时表中生成了以下列:
CREATE TABLE `timing` (
...
`moment` DATETIME NOT NULL,
...
)
生成的CREATE TABLE包含DATETIME列. MySQL中的DATETIME只有秒精度,没有小数部分.为了使小数部分(高达微秒),MySQL 5.6.4和更高版本的enables DATETIME(精度)列,例如DATETIME(3)具有毫秒精度.
我的问题是 – 有没有办法为hbm2ddl生成的时间字段指定精度?至少,这是jadira usertypes,或java.sql,或jdbc驱动程序机制的问题?
附:当我手动修改数据库表以获得我想要的精确列精度时,比如DATETIME(3),一切正常 – joda DateTimes以毫秒精度从DB写入和读取.