2

我在 mysql 数据库中有一个表,其架构如下:[ID,Value,Date] 其中 ID 和 Value 是 int 字段,Date 是 TIMESTAMP。我定义了一个这样的Java类:

class myClass{
  private int ID;
  private int value;
  private java.sql.Timestamp date;
}

如果我尝试使用我为 Hibernate 定义的映射从数据库中读取记录,那么一切看起来都很好,无论如何,如果我创建一个新对象并尝试将其插入到我的数据库中,则会出现错误。我读了很多关于这个的帖子,但我真的很困惑。

4

2 回答 2

5

使用 java.util.Date 类而不是 java.sql.Date。然后它应该看起来像这样:

public class myClass {
     private int ID;
     private int value;

     @Temporal(TemporalType.TIMESTAMP)
     private java.util.date date;
}
于 2013-03-13T16:22:15.957 回答
2

您需要告诉 Hibernate(或 JPA)该列是什么。不同的数据库处理裸日期字段的方式不同。我知道在 Oracle 中,如果您不对列进行注释,Oracle 会将其设为(Oracle)时间戳。这可能是也可能不是您想要的,而它不会是高性能的。我建议始终使用注释,并且基于这个问题,看起来你必须使用 mySQL。

尝试这个:

class myClass {
     private int ID;
     private int value;

     @Temporal(TemporalType.TIMESTAMP)
     private java.sql.Timestamp date;
}
于 2013-03-13T15:14:39.073 回答