休眠 - 使 mysql 中的列类型仅为日期而不是日期时间

hibernate - making type of column in mysql only date and not datetime

我在 mysql 数据库中使用 DATE 类型的字段存储日期:

@Temporal(TemporalType.DATE)
@Column(name="RECIEVING_DATE")
private Date recieving_date;

// getters and setters

但是当 hibernate 保存它时,日期以日期时间格式类型保存,即它不只存储 2015-02-23 而是 2015-02-23 00:00:00.

我用来插入日期的代码

String recieving_date = request.getParameter("recieving_date");
    DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
    java.sql.Date ds = null;
    try {
        Date date = df.parse(recieving_date);
        ds=new java.sql.Date(date.getTime());
    } catch (ParseException e1) {
        System.out.println("Exception occured in parsing date : "+e1);
    }
    doc_mvmnt.setRecieving_date(ds); 

现在,我可以通过 运行 alter table 在数据库中查询自己来更改类型,但每次都会很痛苦。我怎样才能告诉 hibernate 保留我想要的类型。此外,如果可能的话,是否可以使用 hibernate 定义 varchar 和整数的大小。请帮助

如我所见,您仅将日期时间的 date part 传递给 recieving_date,而且 recieving_date 的类型肯定是 java.sql.Date(当您传递该类型的日期时到它)所以我认为这些注释之一应该工作 @Type(type="date")@Temporal(TemporalType.DATE) 并且因为第二个不起作用尝试另一个并提供反馈:

@Column(name="RECIEVING_DATE")
@Type(type="date")
private Date recieving_date;

// getters and setters

如果这不能解决问题,请尝试修改自定义格式的 getter 和 setter