Hibernate中遇到的String转Date的问题的解决办法

我的数据库中表的字段是date类型,所以Hibernate影射文件所对应的字段是java.util.Date类型.

一开始我用的是最直接的

obj.setDate(new Date(request.getParameter("date")));

但是new Date(request.getParameter("date"))是存在安全问题的!是一个已过时的方法,而且好像Hibernate对这个方法也不支持。

数据插入也不成功!那到底怎样才能把一个取回来yyyy-mm-dd的数据转换为一个date类型的数据呢?百度了一下找到下面的两种方式:

一、用 SimpleDateFormat 的parse方法
  1. public static void main(String[] args) {   
  2.         String d = "2008-10-13 15:20:25";   
  3.         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd hh:mm:ss");   
  4.         try {   
  5.             System.out.println(sdf.parse(d));   
  6.         } catch (Exception e) {   
  7.         }   
  8.     }  

不过这种方法转换出来的结果是我的时间少了10个月,当然我转的格式是:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd");

并没有要时分秒!会少10个应该是各方法设置的月份转换的问题!

那所以这种方法最后没被采用!

二、用java.sql.Date类

 try{
InBlock.gif            
InBlock.gif            String   SD   
=   "1999-01-31";           
InBlock.gif            java.sql.Date   d1   
=   java.sql.Date.valueOf(SD);
InBlock.gif            System.out.println(d1);
InBlock.gif            
InBlock.gif            java.text.SimpleDateFormat   input_str
=   new   java.text.SimpleDateFormat(   "yyyy/mm/dd"   );
InBlock.gif            String   tmpDate   
=   "2000/03/02";
InBlock.gif            java.util.Date   xdate   
=   input_str.parse(   tmpDate   );           
InBlock.gif            java.sql.Date   d   
=   new   java.sql.Date(xdate.getTime());
InBlock.gif            System.out.println(d);
ExpandedBlockStart.gif        }
catch(java.text.ParseException   pe)   
InBlock.gif            System.out.println(
"   Error   "   +   pe);  
ExpandedBlockEnd.gif        }
   

 

最后是第二种方法转换成功了^O^

你可能感兴趣的:(Hibernate中遇到的String转Date的问题的解决办法)