Hibernate中日期(Date)类型 与oracle中日期的映射处理
今天第一次使用Hibernate做持久化层 不得不承认 用的真的很省事 省略了很多需要操心的事情 .
如:连接打开关闭 sql代码 各种异常 方法调用 等等
但是这种安逸带来的不安全感也是有的 因为底层sql语句不受控制了
然后呢 我以前处理日期实体声明的都是String类型 然后通过sql语句 to_date(s,'yyyy-MM-dd')
现在呢 ?
很不和谐的给我来个类型转换异常
org.hibernate.exception.DataException: Could not execute JDBC batch update
Caused by: java.sql.BatchUpdateException: ORA-01861: 文字与格式字符串不匹配
错的很显然 字符串无法直接插入数据库的date类型字段中
很惆怅呀 00.
没辙了 想点子呗 立马改回Date类型 修改相关映射文件
但是赋值的时候又纠结了
for example
假设我想指定插入日期为 1990-09-03
玩不了了 怎么都不大好处理
Date date = new Date();
果断问了下同学 因为那伙计以前用JDBC的时候就一直用Date类型
得知可以用SimpleDateFormat类进行字符串日期的格式化
看了下SimpleDateFormat的方法 有个parse(String)方法返回Date对象 有戏!
new SimpleDateFormat("yyyy-MM-dd").parse("2008-10-25");
执行save()操作 插入成功!
接下来执行读取数据库操作
但是要求打印如 1990年-9月-3日数据显示
new SimpleDateFormat("yyyy年-MM月-dd日").format(e.getInvoice_date());
显示结果1990年-9月-3日
注 : SimpleDateFormat 的format(Object o);无法直接格式化字符串