【发布时间】:2014-05-12 04:21:45
【问题描述】:
在我的 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。将休眠属性hbm2ddl.auto 设置为create 值,我在timing 表中生成了以下列:
CREATE TABLE `timing` (
...
`moment` DATETIME NOT NULL,
...
)
生成的CREATE TABLE 包含 DATETIME 列。 MySQL 中的 DATETIME 只有秒精度,没有小数部分。为了启用小数部分,最多为微秒,MySQL 5.6.4 和更高版本的enablesDATETIME(precision) 列,例如DATETIME(3) 具有毫秒精度。
我的问题是——有没有办法为我用 hbm2ddl 生成的时间字段指定精度?至少,这是 jadira 用户类型、java.sql 还是 jdbc 驱动程序机制的问题?
PS 当我手动修改数据库表以获得我想要的精确列精度时,例如 DATETIME(3),一切正常 - joda DateTimes 以毫秒精度从数据库中写入和读取。
【问题讨论】:
标签: java mysql hibernate jodatime hbm2ddl