【发布时间】:2019-12-28 17:05:29
【问题描述】:
我正在尝试通过获取日期然后填充表来获取存储在数据库中的数据。
List<String> contents = new ArrayList<>();
List<Record> records
try {
Session session = sessionFactory.getCurrentSession();
Query<World> query = null;
query = session.createQuery("from World where date like :dateCont, World.class);
query.setParameter("dateCont", "%" + contents.get(0) + "%");
worlds = query.getResultList();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
这里的问题是它给了我一个错误异常:
java.lang.ClassCastException:类 java.lang.String 无法转换为 类 java.util.Date(java.lang.String 和 java.util.Date 在 加载器'bootstrap'的模块java.base)
我知道出了什么问题,因为 List<String> contents 值是字符串,需要转换为日期,但我尝试了很多代码,但它不起作用。
//The following are the codes that I tried but it won't work:
//FIRST
Date date = new SimpleDateFormat("MM/dd/yyyy").parse(contentsStart.get(0));
new SimpleDateFormat("yyyy-MM-dd").format(date);
//---------------------------------------
//SECOND
Date newDate;
DateFormat formatter = null;
formatter = new SimpleDateFormat("yyyy-MM-dd");
newDate = (Date) formatter.parse(contentsStart.get(0));
那么,有没有办法将给定的值更改为日期,但它应该保留格式“yyyy-MM-dd”并且数据类型应该是日期。
PS:数据库中日期的格式也是“yyyy-MM-dd”。 我的日期实体字段和数据库中的日期都是 Date 作为他们的 数据类型。
【问题讨论】:
-
日期没有“yyyy-MM-dd”格式。
-
@Stultuske 是的,但是要从数据库中获取数据,格式应该是一样的,对吧?我在数据库中的日期格式是“yyyy-MM-dd”
-
不,类型必须相同。如果它是数据库中的 varchar,则将其读取为字符串,如果它是数据库中的日期,则将其读取为日期。
-
Java 中的日期在显示时具有默认格式。您只能使用
new SimpleDateFormat("yyyy-MM-dd").format(date)更改输出格式 -
@Stultuske Date 是我数据库中的类型。存储在“内容”中的值来自 .txt 文件,因此我首先将其解析为日期并使用以下代码将其格式化为“yyyy-MM-dd”:
Date date = new SimpleDateFormat("MM/dd/yyyy").parse(value); contents.add(new SimpleDateFormat("yyyy-MM-dd").format(date));但是存储在内容中的数据类型是字符串,因为“。格式(值)”。这就是为什么我要问如何再次将内容日期中的值作为数据类型。
标签: java hibernate spring-mvc hql crud