【问题标题】:hibernate - making type of column in mysql only date and not datetimehibernate - 在 mysql 中只创建日期而不是日期时间的列类型
【发布时间】:2015-04-24 04:48:30
【问题描述】:

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

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

// getters and setters

但是当休眠保存它时,日期以日期时间格式保存,即它不只存储 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 和整数的大小。请帮忙

【问题讨论】:

  • 你如何设置recieving_date的日期值,请显示与你设置的日期相关的代码
  • 我编辑了帖子!!看看能不能帮忙
  • 不,我正在尝试只使用休眠

标签: java mysql hibernate date datetime


【解决方案1】:

正如我所见,您仅将日期时间的 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

【讨论】:

  • 这个Type注解属于哪个包??
  • org.hibernate.annotations.Type
  • 非常欢迎您,很高兴看到问题已得到解决。
  • 我可以使用这个注释来指定 varchar 或整数的长度吗?有没有注释可以做到这一点?因为默认情况下它提供 255 个字符,如果我不想保持这个大小,可以增加或减少到 100 个字符
  • 对于字符串的长度,您可以使用@Columnlength 属性(对于列的长度)注释。您还可以使用@Size 注释的max 属性(用于强制值的长度)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-06-16
  • 2015-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-23
  • 1970-01-01
相关资源
最近更新 更多