SSH,不支持从 date 到 BINARY 的转换

本文详细探讨了在使用Struts2、Hibernate3、Spring3.4时遇到的日期类型转Binary错误问题,并通过修改实体文件中的SQL类型来解决该问题。

这个问题网上基本没有答案,google倒是有一个论坛有相同问题,但是解决方案不行,经过几天奋战,基本了解了。

首先,后台使用的是 struts2,hibernate3,spring3.4              具体问题提示请戳  http://bbs.youkuaiyun.com/topics/390750850

org.springframework.jdbc.UncategorizedSQLException: Hibernate operation: could not execute query; uncategorized SQLException for SQL [select calendar_t0_.Cale_id as Cale1_1_, calendar_t0_.Year_Begin as Year2_1_, calendar_t0_.Year_End as Year3_1_, calendar_t0_.Weeks as Weeks1_, calendar_t0_.Weeks_Begin as Weeks5_1_, calendar_t0_.Weeks_End as Weeks6_1_ from T_SchoolYear calendar_t0_ where calendar_t0_.Year_Begin='2013' and calendar_t0_.Year_End='2014']; SQL state [null]; error code [0]; 不支持从 date 到 BINARY 的转换。; nested exception is com.microsoft.sqlserver.jdbc.SQLServerException: 不支持从 date 到 BINARY 的转换。
一个查询语句,里面并没有涉及到binary字段,实体类型也没有涉及binary,怎么会转换binary呢,第一猜想估计是hibernate将查询到的结果保存到缓存中,后查阅网上资料,发现hibernate默认一级缓冲是没开启的,二级缓冲我也没开,这个也就排除了。仔细查询资料  有人建议是将日期字段用ISNULL()函数将查询到的空date类型赋值,避免是查询空值的情况,但是我查询出来的值是有的,不存在空值,后面又查资料,找到java.hibernate sqlserver之间类型转换的文章,这才有点眉目,

如下:

六、hibernate映射类型

1.内置映射类型

Hibernate

java

sql

取值范围

integer int

int Integer

INTEGER

4

long

long Long

BIGINT

8

short

short Short

SMALLINT

2

byte

byte Byte

TINYINT

1

float

float Float

FLOAT

4

double

double Double

DOUBLE

8

big_decimal

java.math.BigDecinimal

NUMERIC

8位含2位小数部分

character

char Character String

CHAR(1)

定长字符

string

String

VARCHAR

变长串

boolean

boolean Boolean

BIT

布尔

yes_no

boolean Boolean

CHAR(1)

布尔

true_false

boolean Boolean

CHAR(1)

布尔

?

2.Java时间和日期类型

Hibernate

java

sql

取值范围

date

util.Date sql.Date

DATE

YYYY-MM-DD

time

util.Date sql.Time

TIME

HH:MM:SS

timestamp

util.Date sql.timestamp

TIMESTAMP

YYYYMMDDHHMMSS

calendar

java.util.Calendar

TIMESTAMP

YYYYMMDDHHMMSS

calendar_date

java.util.Calendar

DATE

YYYY-MM-DD

?

3. 大对象类型的映射

Hibernate

java

sql

binary

byte[]

VARBINARY(BLOB)

text

String

CLOB

serializable

实现类

BARBINARY(BLOB)


转载: http://blog.knowsky.com/180534.htm

然后我将实体文件的sql.date类型改为util.date,数据库date,改为datetime 刚刚可以配好格式,也算不是办法的办法把,

至于为什么会出现binary类型转换,在处理日期的时候  我也不清楚,忘网友解答,不胜感激

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值