【发布时间】: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