Hibernate中日期(Date)类型 与oracle中日期的映射处理

时间:2021-12-23 18:04:32

今天第一次使用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);无法直接格式化字符串