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

来源:互联网 发布:有首单立减的外卖软件 编辑:程序博客网 时间:2024/05/17 04:47

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

首先,后台使用的是 struts2,hibernate3,spring3.4              具体问题提示请戳  http://bbs.csdn.net/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类型转换,在处理日期的时候  我也不清楚,忘网友解答,不胜感激

0 0
原创粉丝点击