【发布时间】:2014-01-04 16:20:43
【问题描述】:
我需要将当前日期和时间导入到格式为TimeStamp 的MySQL 数据库字段中。通过检查示例数据,MySQL TimeStamp 数据类型的格式似乎是“yyyy-mm-dd hh:mm:ss”。我在我的 spring hibernate 应用程序中使用Joda-Time 格式。如何以底层 MySQL TimeStamp 格式字段接受的格式获取当前日期时间?
这是我当前的代码,它不会编译,因为 eclipse 说 .parseDateTime() 需要一个字符串参数而不是 DateTime 参数:
public void setCreated(){
DateTime now = new org.joda.time.DateTime();
DateTimeFormatter fmt = DateTimeFormat.forPattern("yyyy-MM-dd hh:mm:ss");
created = fmt.parseDateTime(now);
System.out.println("'''''''''''''''''''''' created is: "+created);
}
我试图坚持的实体定义如下:
@Entity
@Table(name = "documents")
public class Document {
@Id
@GeneratedValue
@Column(name="id")
private Integer id;
@ManyToOne
@JoinColumn(name = "client_id")
private Patient patient;
@ManyToOne
@JoinColumn(name = "type_id")
private DocumentType type;
@Column(name="name")
private String name;
@Column(name="description")
private String description;
@Column(name="filename")
private String filename;
@Column(name="content")
@Lob
private Blob content;
@Column(name="content_type")
private String contentType;
@Column(name = "created")
private DateTime created;
public Integer getId(){return id;}
public void setId(Integer i){id=i;}
protected void setPatient(Patient patient) {this.patient = patient;}
public Patient getPatient(){return this.patient;}
public void setType(DocumentType type) {this.type = type;}
public DocumentType getType() {return this.type;}
public String getName(){return name;}
public void setName(String nm){name=nm;}
public String getDescription(){return description;}
public void setDescription(String desc){description=desc;}
public String getFileName(){return filename;}
public void setFileName(String fn){filename=fn;}
public Blob getContent(){return content;}
public void setContent(Blob ct){content=ct;}
public String getContentType(){return contentType;}
public void setContentType(String ctype){contentType=ctype;}
public void setCreated(){
DateTime now = new org.joda.time.DateTime();
DateTimeFormatter fmt = DateTimeFormat.forPattern("yyyy-MM-dd hh:mm:ss");
created = fmt.parseDateTime(now);
System.out.println("''''''''''''''''''''''''''' created is: "+created);
}
public DateTime getCreated() {return this.created;}
@Override
public String toString() {return this.getName();}
public boolean isNew() {return (this.id == null);}
}
如何更改上述内容,以便以正确的格式保存数据以插入 MySQL 时间戳字段?
编辑:
与 Sotirios 的建议有关,这里是我当前 pom.xml 的相关部分,以供讨论:
<properties>
<jodatime-hibernate.version>1.3</jodatime-hibernate.version>
<jodatime-jsptags.version>1.1.1</jodatime-jsptags.version>
<jodatime.version>2.3</jodatime.version>
<jadira-usertype-core.version>3.1.0.CR8</jadira-usertype-core.version>
</properties>
<dependencies>
<dependency>
<groupId>org.jadira.usertype</groupId>
<artifactId>usertype.core</artifactId>
<version>${jadira-usertype-core.version}</version>
</dependency>
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>${jodatime.version}</version>
</dependency>
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time-hibernate</artifactId>
<version>${jodatime-hibernate.version}</version>
</dependency>
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time-jsptags</artifactId>
<version>${jodatime-jsptags.version}</version>
</dependency>
</dependencies>
【问题讨论】:
-
你是直接使用JDBC吗?
-
@SotiriosDelimanolis 我正在使用hibernate和jpa。
-
你必须向我们展示你试图坚持的实体。
-
@SotiriosDelimanolis 我刚刚为上面的实体添加了代码。你还需要什么吗?
-
这个我不详细了解,但是Hibernate必须对Joda有一些支持。也许开始here。
标签: java mysql spring spring-mvc jodatime