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

JavaSpring-MySQL时间戳字段和毫秒精度,java,mysql,spring,spring-mvc,jpa,Java,Mysql,Spring,Spring Mvc,Jpa,我试图以毫秒的精度在MySQL数据库中存储一些时间信息。我要存储的格式是2015-08-13 10:56:24.570类似的格式 问题是,我必须创建具有长度属性(3或6,取决于小数部分)的表列。我用JavaSpring框架编写的应用程序会自动创建mysql表,如果以前没有创建过的话。但是我不能设置日期字段的长度属性 Spring Jpa的文档中说:“@Column注释有长度参数,但它只包含字符串字段。” 另一个有趣的部分是我不能使用@Temporal注释。My IDE给出了一个错误,“此位置不允

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

问题是,我必须创建具有长度属性(3或6,取决于小数部分)的表列。我用JavaSpring框架编写的应用程序会自动创建mysql表,如果以前没有创建过的话。但是我不能设置日期字段的长度属性

Spring Jpa的文档中说:“
@Column
注释有长度参数,但它只包含字符串字段。”

另一个有趣的部分是我不能使用
@Temporal
注释。My 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.

}

使列为类型

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
,如果有帮助的话


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

我意识到这是一篇老文章,但我遇到了同样的问题并找到了解决方法。以下是我的实体的外观:

@Entity
@Table(name = "ActivityLog")
public class ActivityLogBean {
    @Basic
    @Temporal(TemporalType.TIMESTAMP)
    private java.util.Date alDateTime;
}
我在“@Temporal(TemporalType.TIMESTAMP)”行上收到错误消息“此位置不允许使用注释@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;
}

您使用的列的类型是什么?然后发布实体…我尝试了“DATE,DATETIME,TIMESTAMP”。只要我不添加length属性,它就不会保存小数部分(毫秒)@你使用Java.SQL包的时间戳,因为它的默认格式考虑毫秒精度。问题不是生成毫秒精确格式化的时间信息,问题是存储它们。是的,你肯定是正确的,我可以创建我的时间信息。但是当我尝试将其存储在MySQL数据库中时,它保存了“2013-10-10 10:49:29”。将您在问题中插入的实体类粘贴到MySQL db中。我认为您需要更改db列数据类型。