hibernate - 使mysql中的列类型只有date而不是datetime

时间:2015-02-22 22:22:33

标签: java mysql hibernate date datetime

我使用DATE:

类型的字段在mysql数据库中存储日期
@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 query来更改类型,但每次都会很痛苦。我怎么能告诉hibernate保持我想要的类型。而且,如果这是可能的,是否可以使用hibernate定义varchar和整数的大小。请帮忙

1 个答案:

答案 0 :(得分:1)

因为我看到你只将date part日期时间传递给recieving_daterecieving_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