前段时间做项目,遇到oracle的时间问题头疼了2天,插入时间没有精确到秒,最后问题还是解决,但是什么原因还是不解。忽悠,忽悠社区,忽悠论坛.! X) h, L" _0 D8 i# t
oracle数据库时间字段为Date类型,Hibernate中映射字段类型为java.sql.Timestamp,PO中则为java.util.Date不变,忽悠社区是综合性社区网站,将最新、最快、最专业的资讯、新闻,图片,视频奉献给所有爱好者。% C1 F- @( K1 i6 ^6 A5 M1 T
插入时间用new java.sql.Date(new java.util.Date().getTime()),数据库插入的时间没有问题,但是取的时候时间后面却又多了个毫秒,而且值为0,不知何解,要是在重新格式化成String又显示成英文格式的时间。。。。
* F# l( v- X6 a0 e$ C* r忽悠,忽悠社区,忽悠论坛.最后不得已用<fmt:formatDate value="${}" type="both"/>解决了问题,原因不明!
6 V0 j4 ^1 q' V% ]7 V3 C) W5 m7 G
7 V7 m: N2 d7 w6 Y2 J) R( O$ j忽悠社区还有一点需要注意的是formbean上来的数据都是String型,会造成类型不匹配的异常,需要增加个get/set方法- private String savedate;
- public String getSavedate() {
- java.text.DateFormat dateFormat =new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- return dateFormat.format(this.savedate);
- }
- public void setSavedate(String savedate) throws ParseException {
- java.text.DateFormat dateFormat =new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- this.createtime = dateFormat.parse(savedate);
- }
复制代码 createtime为需要转换的时间,这里简化了下。
0 o6 e/ E' m8 e) ]* T# Wwww.huuoo.com
- h3 ?( t2 R5 o, a" k9 F8 s0 X8 Lwww.huuoo.comDetachedCriteria时间查询
: i; x" Z$ h; ^) X8 [+ c忽悠社区action中:- DetachedCriteria detachedCriteria = DetachedCriteria .forClass(Log.class);
-
- String startTime = request.getParameter("startTime");
- String endTime = request.getParameter("endTime");
- if (startTime != null && endTime != null && startTime.length()>0 && endTime.length()>0) {
- if (Tools.isValidDate(startTime) && Tools.isValidDate(endTime)) {
- if (Tools.before(startTime, endTime)) {
- detachedCriteria.add(Restrictions.between("actTime",
- Tools.convertStringToDate(startTime), Tools
- .convertStringToDate(endTime)));
- } else {
- throw new RuntimeException("开始时间不能在结束时间之前!");
- }
- } else {
- throw new RuntimeException("日志记录时间不符合规定的格式!");
- }
- }
- Page page = logService.listSearchLog(pageno, rowsize, orderby,
- isReserve, detachedCriteria);
复制代码 daoimp代码如下:- public Page listSearchLog(final int pageno, final int rowsize,
- final String orderby, final boolean isReserve,
- final DetachedCriteria detachedCriteria)
- throws DataAccessException, HibernateException {
- return (Page) getHibernateTemplate().execute(new HibernateCallback() {
- public Object doInHibernate(Session session)
- throws HibernateException {
- Page page = null;
- Criteria criteria = detachedCriteria
- .getExecutableCriteria(session);
- int total = ((Integer) criteria.setProjection(
- Projections.rowCount()).uniqueResult()).intValue();
- System.out.println("查询用户符合条件的数目为:" + total);
- criteria.setProjection(null);
-
- if (total > 0) {
- page = new Page();
- page.setRowsize(rowsize);
- page.setPageno(pageno);
- page.setTotalrows(total);
- page.excecute();
-
- Criteria result = criteria.setFirstResult(page.getStart())
- .setMaxResults(page.getRowsize());
-
- if (orderby != null && orderby.length() > 0) {
- if (isReserve) {
- result = result.addOrder(Order.desc(orderby));
- } else {
- result = result.addOrder(Order.asc(orderby));
- }
- }
- List resultList = new ArrayList();
- Log log = null;
- for (java.util.Iterator it = result.list().iterator(); it
- .hasNext();) {
- Object[] m = (Object[]) it.next();
- if (m.length == 3) {
- log = (Log) m[2];
- }
- if (m.length == 4)
- log = (Log) m[3];
-
- resultList.add(log);
-
- }
- page.setList(resultList);
-
- }
-
- if (page == null) {
- page = Page.getEmptyPage();
- }
- return page;
- }
- }, true);
-
- }
复制代码 |