`

解决Hibernate3.0的Date类型的数据返回结果没有时分秒的问题

阅读更多
//$Id: DateType.java 8891 2005-12-21 05:13:29Z oneovthafew $
package org.hibernate.type;

import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.sql.Types;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;

import org.hibernate.EntityMode;
import org.hibernate.Hibernate;
import org.hibernate.HibernateException;
import org.hibernate.dialect.Dialect;

/**
 * <tt>date</tt>: A type that maps an SQL DATE to a Java Date.
 * @author Gavin King
 * @modify by zhenjw 
 */
public class DateType extends MutableType implements IdentifierType, LiteralType {

	private static final String DATE_FORMAT = "dd MMMM yyyy";

	public Object get(ResultSet rs, String name) throws SQLException {		
		//return rs.getDate(name);		
		Timestamp tamp=rs.getTimestamp(name);
		Date result=null;
		if(tamp!=null)
			result=new Date(tamp.getTime());		
		return result;
		
	}

	public Class getReturnedClass() {
		return java.util.Date.class;
	}

	public void set(PreparedStatement st, Object value, int index) throws SQLException {

		Date sqlDate;
		if ( value instanceof Date) {
			sqlDate = (Date) value;
		}
		else {
			sqlDate = new Date( ( (java.util.Date) value ).getTime() );
		}
		st.setDate(index, sqlDate);
	}

	public int sqlType() {
		return Types.DATE;
	}

	public boolean isEqual(Object x, Object y) {

		if (x==y) return true;
		if (x==null || y==null) return false;

		java.util.Date xdate = (java.util.Date) x;
		java.util.Date ydate = (java.util.Date) y;
		
		if ( xdate.getTime()==ydate.getTime() ) return true;
		
		Calendar calendar1 = java.util.Calendar.getInstance();
		Calendar calendar2 = java.util.Calendar.getInstance();
		calendar1.setTime( xdate );
		calendar2.setTime( ydate );

		return Hibernate.CALENDAR_DATE.isEqual(calendar1, calendar2);
	}

	public int getHashCode(Object x, EntityMode entityMode) {
		Calendar calendar = java.util.Calendar.getInstance();
		calendar.setTime( (java.util.Date) x );
		return Hibernate.CALENDAR_DATE.getHashCode(calendar, entityMode);
	}
	
	public String getName() { return "date"; }

	public String toString(Object val) {
		return new SimpleDateFormat(DATE_FORMAT).format( (java.util.Date) val );
	}

	public Object deepCopyNotNull(Object value) {
		return new Date( ( (java.util.Date) value ).getTime() );
	}

	public Object stringToObject(String xml) throws Exception {
		return DateFormat.getDateInstance().parse(xml);
	}

	public String objectToSQLString(Object value, Dialect dialect) throws Exception {
		return '\'' + new Date( ( (java.util.Date) value ).getTime() ).toString() + '\'';
	}

	public Object fromStringValue(String xml) throws HibernateException {
		try {
			return new SimpleDateFormat(DATE_FORMAT).parse(xml);
		}
		catch (ParseException pe) {
			throw new HibernateException("could not parse XML", pe);
		}
	}
	
}





分享到:
评论

相关推荐

    解决Hibernate对于Date类型的数据返回结果中时分秒不对的问题

    在使用Hibernate进行数据库操作时,有时会遇到一个常见的问题,即当从数据库中查询Date类型的数据并由Hibernate返回时,发现结果中的时分秒部分不正确。这个问题通常源于多个因素,包括日期时间的序列化与反序列化...

    hibernate3.0

    《深入理解Hibernate3.0:核心库解析及应用》 Hibernate3.0作为一个经典且广泛使用的对象关系映射(ORM)框架,极大地简化了Java开发者处理数据库操作的复杂性。这个压缩包包含了Hibernate3.0的核心组件以及其依赖...

    hibernate3.0中文api

    hibernate3.0的中文api帮助文档 hibernate3.0的中文api帮助文档 hibernate3.0的中文api帮助文档 hibernate3.0的中文api帮助文档 hibernate3.0的中文api帮助文档 hibernate3.0的中文api帮助文档 hibernate3.0的中文...

    lib-Hibernate3.0 jar包

    在Java EE应用中,Hibernate3.0版本是当时的一个重要里程碑,引入了许多新特性并提升了性能。 ### 1. Hibernate 概述 Hibernate 允许开发人员通过Java对象来操作数据库,而无需编写SQL语句。它将Java类与数据库表...

    hibernate3.0jar包

    hibernate3.0jar包

    Hibernate 3.0 JAR 驱动包

    Hibernate 3.0 的JAR 驱动包 希望对大家有用 就一点分呵呵

    hibernate-3.0.zip

    《深入剖析Hibernate 3.0:源码解析与应用实践》 Hibernate,作为一个开源的对象关系映射(ORM)框架,自其诞生以来就受到了广大Java开发者们的热烈欢迎。本篇文章将针对“hibernate-3.0.zip”这一版本进行详细讲解...

    hibernate3.0纯jar包

    11. **延迟加载(Lazy Loading)**: 为了解决效率问题,Hibernate提供了懒加载机制,只在真正需要时才加载关联的对象,避免了大数据量的无谓传输。 12. **批处理**: Hibernate支持批处理操作,可以一次提交多个操作...

    hibernate3.0 jar包

    Hibernate 3.0 是一个非常重要的Java持久化框架,它为开发者提供了ORM(对象关系映射)服务,使得在Java应用程序中操作数据库变得更加便捷。在这个jar包中,不仅包含了Hibernate的核心库,还内置了API帮助文档,对于...

    Hibernate3.0完整中文版教程.pdf

    ### Hibernate 3.0 完整中文版教程知识点解析 #### 一、概述 Hibernate 是一个开放源代码的 Java 持久层框架,它极大地简化了数据持久化的编程工作,使得 Java 开发人员可以使用面向对象的方式进行数据库操作。...

    Struts 1.1、Hibernate 3.0和SQL Server 2005数据库驱动包

    Struts 1.1、Hibernate 3.0 和 SQL Server 2005 数据库驱动包是构建基于Java的企业级Web应用程序的关键组件。这些技术在2000年代中期广泛应用于开发面向服务架构(SOA)和模型视图控制器(MVC)模式的系统。 Struts...

    struts1.2+spring2.3+hibernate3.0

    Struts1.2、Spring2.3 和 Hibernate3.0 是经典的Java企业级开发框架组合,被称为SSH(Struts-Spring-Hibernate)集成框架。这个组合在2000年代末到2010年初非常流行,它们各自解决了不同的问题,并通过相互配合,...

    hibernate3.0例子源码

    hibernate3.0连接SQLServer代码简单例子,单表t_user例子,可以运行。 数据库表设计 CREATE TABLE [dbo].[t_user]( [t_id] [nvarchar](50) NOT NULL, [t_login_name] [nvarchar](50) NULL, [t_password] ...

    hibernate3.0API源文件

    Hibernate3.0提供了一套类型系统,允许自定义类型映射,比如日期时间类型的处理。 在Eclipse环境下,使用Hibernate3.0的API源文件可以帮助开发者更好地理解和使用Hibernate的各种功能,查看类和方法的实现细节,...

    hibernate 3.0

    hibernate 包 3.0 必备

    hibernate3.0.jar

    hibernate3.0.jar

    spring2.5+struts2+hibernate3.0JAR包集合

    标题 "spring2.5+struts2+hibernate3.0JAR包集合" 提及的是一个集成开发环境中的核心组件,这三个框架是Java Web开发中的重要工具,用于构建高效、可扩展的企业级应用程序。 Spring 2.5是Spring框架的一个版本,它...

    hibernate 3.0 dtd

    在Hibernate 3.0中,有两个重要的DTD文件:`hibernate-configuration-3.0.dtd`和`hibernate-mapping-3.0.dtd`,它们定义了Hibernate配置文件和映射文件的结构。 `hibernate-configuration-3.0.dtd` 是Hibernate配置...

    struts2.0 spring2.0 hibernate3.0整合开发快速入门-3

    ### Struts2.0、Spring2.0与Hibernate3.0整合开发快速入门知识点解析 #### 一、Struts2.0与Hibernate3.0整合基础 **知识点1:Struts2.0简介** - **定义**: Struts2是Apache基金会下的一个开源项目,它是一个基于...

    OA办公自动化管理系统(Struts1.2+Hibernate3.0+Spring2+DWR)

    公文管理、申请审批、公告管理、会议管理、权限管理、个人办公、客户管理、人事等等。项目技术:Struts1.2 + Hibernate3.0 + Spring2 +DWR。java毕业设计 jsp毕业设计 ssh毕业设计

Global site tag (gtag.js) - Google Analytics