Java Spring - MySQL时间戳字段和毫秒精度

时间:2015-08-13 10:09:03

标签: java mysql spring spring-mvc jpa

我试图以毫秒精度在MySQL数据库中存储一些时间信息。我要存储的格式是2015-08-13 10:56:24.570

问题是,我必须创建具有长度属性的表列(3或6,取决于小数部分)。我用Java Spring Framework编写的应用程序会自动创建mysql表,如果它之前没有创建的话。但我无法设置日期字段的长度属性。

" @Column注释具有长度参数,但只有String字段才有。"春天Jpa的文件说。

另一个有趣的部分是我无法使用@Temporal注释。我的IDE给出了一个错误,"该位置不允许注释@Temporal"。我想知道为什么我也给出了这个错误。

任何帮助对我来说都很棒。

编辑:我用于创建mysql表的Java代码

@Entity
@Table(name = "dbTable")
public class Report
{
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;


    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "myDate", nullable = false, length = 6)
    private java.util.Date date;

    // Getters Setters etc.

}

2 个答案:

答案 0 :(得分:1)

制作

类型的列
  

的java.sql.Timestamp

在MySQL中存储与时间相关的信息。

简单示例: -

  public static void main(String[] args){
    System.out.println(java.sql.Timestamp.valueOf("2013-10-10 10:49:29.12000"));
}

Output:- 2013-10-10 10:49:29.12

Read this,如果有帮助的话。

将列类型从java.util.Timestamp更改为java.sql.Timestamp。

答案 1 :(得分:0)

我意识到这是一篇过时的文章,但是我遇到了同样的问题,并想出了解决方法。这是我的实体的样子:

@Entity
@Table(name = "ActivityLog")
public class ActivityLogBean {
    @Basic
    @Temporal(TemporalType.TIMESTAMP)
    private java.util.Date alDateTime;
}

我在“ @Temporal(TemporalType.TIMESTAMP)”行上收到错误消息“该位置不允许使用注释@Temporal”。

问题与我要导入的Temporal类有关,而在遇到问题时我正在使用的import语句是:

导入org.springframework.data.jpa.repository.Temporal;

我将导入更改为以下内容,错误消失了:

导入javax.persistence.Temporal;

这是我现在的全部班级:

package com.mypackage.beans;

import javax.persistence.Basic;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

@Entity
@Table(name = "ActivityLog")
public class ActivityLogBean {
    @Basic
    @Temporal(TemporalType.TIMESTAMP)
    private java.util.Date alDateTime;
}