小编Mic*_*old的帖子

如何强制Hibernate将日期作为java.util.Date而不是Timestamp返回?

情况:

我有一个带有java.util.Date类型变量的persistable类:

import java.util.Date;

@Entity
@Table(name = "prd_period")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class Period extends ManagedEntity implements Interval {

   @Column(name = "startdate_", nullable = false)
   private Date startDate;

}
Run Code Online (Sandbox Code Playgroud)

DB中的对应表:

CREATE TABLE 'prd_period' (
  'id_' bigint(20) NOT NULL AUTO_INCREMENT,
 ...
  'startdate_' datetime NOT NULL
)
Run Code Online (Sandbox Code Playgroud)

然后我将Period对象保存到DB:

Period p = new Period();
Date d = new Date();
p.setStartDate();
myDao.save(p);
Run Code Online (Sandbox Code Playgroud)

在那之后如果我试图从DB中提取我的对象,它将返回时间戳类型的变量startDate - 并且我尝试使用的所有地方等于(...)返回false.

问题:有没有办法强制Hibernate将日期作为java.util.Date类型的对象而不是Timestamp返回而不对每个这样的变量进行显式修改(例如,它必须能够正常工作,而不需要对java.util的现有变量进行显式修改.日期类型)?

注意:

我找到了许多显式解决方案,其中使用了注释或修改了setter - 但我有许多带有Date变量的类 - 所以我需要一些集中式解决方案,下面描述的所有内容都不够好:

  1. 使用注释@Type: - 将返回java.sql.Date

    @Column
    @Type(type="date")
    private Date startDate;
    
    Run Code Online (Sandbox Code Playgroud)
  2. 使用注释@Temporal(TemporalType.DATE) - …

java mapping hibernate jpa

53
推荐指数
3
解决办法
10万
查看次数

标签 统计

hibernate ×1

java ×1

jpa ×1

mapping ×1