【问题标题】:Timestamp format must be yyyy-mm-dd hh:mm:ss[.fffffffff] when trying to select from db尝试从 db 中选择时,时间戳格式必须为 yyyy-mm-dd hh:mm:ss[.fffffffff]
【发布时间】:2021-05-04 09:22:50
【问题描述】:

我有一个使用 sqlQuery 的简单选择,我正在尝试将它映射到一个实体。我不明白问题出在哪里,或者我能做些什么,我尝试了这个网站的多个来源,但没有任何结果

获取记录的函数

    public List<MYTABLE> getRecords(int first, int pageSize, String sortField, Map<String, Object> filters) throws DBEDatabaseException {   

        
        try {
            EntityManager em = getMyEmOrThrow();
            SQLQuery q = em.unwrap(SessionImpl.class).createSQLQuery("SELECT * FROM MYTABLE A where A.status = '1000'");
            q.addEntity("A", MYTABLE.class);
            q.setFirstResult(first);
            q.setMaxResults(pageSize);
            
            List<MYTABLE> results = q.list();
            
            return  results;
        }catch(RuntimeException e){
            throw new MyCustomException("Failure in getting records from table MYTABLE : ", e);
    }


```
Entity - **getters and setters and rest of the columns omitted** 
@Entity(name = "MYTABLE")
@Table(schema = "MYSCHEMA", name = "MYTABLE")
public class MYTABLE implements Serializable{

    @Column(name = "TIMESTAMP", columnDefinition = "TIMESTAMP (6)") // this column is the problem
    private Timestamp timestamp;

}


```
THIS DOESN'T WORK AS WELL

     @Column(name = "TIMESTAMP", columnDefinition = "TIMESTAMP (6)")
        @Temporal(TemporalType.TIMESTAMP)
        private Date timestamp;



[Records in db look like this][1]


  [1]: https://i.stack.imgur.com/ahDmJ.png

【问题讨论】:

  • 问题出在语言环境上。预期格式为yyyy-mm-dd hh:mm:ss[.fffffffff],而存储数据的格式为yyyy-mm-dd hh:mm:ss[,fffffffff]。顺便说一句,您为什么要使用基于 java.util.Date 的过时且损坏的 API?我建议您完全停止使用它们并切换到modern date-time API
  • 感谢您的回答。不幸的是,我不能使用那个 API,因为我工作的项目是一个旧项目。我该如何解决这个问题?制作一个返回字符串的getter,如下所示?我对解决方案有点困惑

标签: java sql oracle hibernate jpa


【解决方案1】:

对于格式化日期输出,您应该使用 SimpleDateFormat, 你也可以为你的实体定义格式化方法

【讨论】:

  • 我在哪里可以做到这一点?在setter方法中?
  • 不,最好你有另一个返回字符串而不是日期的getter
猜你喜欢
  • 2013-06-16
  • 1970-01-01
  • 2023-03-04
  • 1970-01-01
  • 1970-01-01
  • 2017-07-09
  • 1970-01-01
  • 1970-01-01
  • 2018-10-05
相关资源
最近更新 更多