2011-02-08 62 views
4

您好我想一个字段在我的Java类问题与@Temporal(TemporalType.DATE)

@Column(name = "date_of_birth") 
@Temporal(TemporalType.DATE) 
private Date dateOfBirth; 

在我的表映射到一个字段:

date_of_birth date, 

,但现在当我尝试运行我的应用程序有一个例外:

Caused by: org.hibernate.HibernateException: Wrong 
column type in public.users for column date_of_birth. 
Found: date, expected: timestamp 

这是我的配置文件:

dataSource.driverClassName=org.postgresql.Driver 
hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect 
hibernate.hbm2ddl.auto=validate 
hibernate.show_sql=false 

这里有什么问题?

感谢 的Dawid

+0

由于某种原因,“@ Temporal”被忽略。 – axtavt 2011-02-08 16:03:43

回答

1

我认为在数据库字段类型必须是timestamp,而不是date。但这可能不是你想要的,因为你正在存储一个出生日期。

-1

相当有点旧,但是正在寻找一些@Temporal的用法,并且已经出现了5年前的问题;)。

问题是显而易见的:)系统错误堆栈跟踪告诉你:org.hibernate.HibernateException:错列式在 public.users列DATE_OF_BIRTH发现:

“所致。迄今为止,预期: 时间戳“

你正试图把Date对象到您的数据库期望一个时间戳一个 - >您TemporalType是DATE类型和DB预计将TIMESTAMP的

@Column(名称= “DATE_OF_BIRTH”)

@Temporal(TemporalType.DATE)

私人日期DATEOFBIRTH;

+0

我不知道这是不是一个笑话 - 我们都可以阅读。该字段在其表格中定义为日期。他在他的Java源代码中使用了java.util.Date和TemporalType.DATE。为什么数据库在总是定义日期时需要时间戳? – 2016-06-22 08:23:48