hibernate+proxool+sybase的难题,200分求解!

s_phoenix 2005-06-08 04:55:05
分不够还可以再加!
问题的原因我找到了,但是不知道如何解决。
按照同样的方法,使用其他数据库都无问题,但是移植到SYBASE上,就会出现这样的错误:
SET CHAINED command not allowed within multi-statement transaction.

使用sybase jdbc driver得到connection conn,多次使用conn.setAutoCommit(b),b 为相同的true|false时,报错SET CHAINED command not allowed within multi-statement transaction.

由于hibernate在opensession,开始事务,closesession等处都执行了setAutoCommit操作,所以就出现了上述的现象。

我在以往的项目中直接用JDBC时是这样解决的:
使用
if (conn.getAutoCommit()!=b) {
conn.setAutoCommit(b);
}
代替
conn.setAutoCommit(b).

现在用hibernate,它都封装好了,我如何解决这个问题呢?
江湖救急!!!有用Hibernate+syabse+proxool的朋友么?你们是怎么解决的?多谢多谢!
...全文
175 点赞 收藏 20
写回复
20 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
s_phoenix 2005-07-11
自己解决了。通过拦截setAutoCommit和close方法,并适当做修改,解决了sybase的问题。
修改的是proxool,因为jconn没有源代码。修改hibernate又不成功,只好修改夹在其中的缓冲池了。
回复
s_phoenix 2005-07-08
看来是没有人会了?
回复
dafei0320 2005-06-28
偶也不太懂-帮你顶
看是高人!
回复
kingofhawks 2005-06-28
看到分数就顶一下
回复
lindd 2005-06-12
顶!
回复
grayfox2008 2005-06-12
好多分数啊,顶
回复
s_phoenix 2005-06-10
顶上去
回复
qingzhuang 2005-06-09
没用过sybase
回复
s_phoenix 2005-06-09
编码的问题还是让我很郁闷。哪位高人有解决方案?
回复
fashchina 2005-06-09
帮助顶下

解决了就好

接分了
回复
jspxnet 2005-06-09
下jTDS 修改代码
回复
flyfoxs 2005-06-09
200分啊,好久没见过这么多分了.
回复
s_phoenix 2005-06-09
但是jTDS有个麻烦事情,字符编码必须指定和数据库的默认值一致。
用jConn就可以自行指定。
比如数据库默认为ISO_1。jConn可以在连接URL中指定Charset=cp936,这样基于GBK的汉字,读写都没问题。
而jTDS就只能在URL中写charset=ISO_1。我插入一段汉字,还要自己先转码成ISO_1。不爽。有啥解决办法?
数据库端由于还有其他应用,所以不能修改默认字符编码。
回复
s_phoenix 2005-06-09
顶者有分!
希望这篇帖子被更多人看到,赶快逃离jConn的陷阱,早日用上jTDS。
回复
little06 2005-06-09
看到是高人
顶一下
回复
yinleiyoung 2005-06-09
顶一下
回复
s_phoenix 2005-06-09
我换了驱动就好了,换成了jTDS,看来jConn是存在这方面的问题。
回复
gdsy 2005-06-09
我不太熟悉这方面的东西,路过帮楼主顶一下
回复
laowang20000 2005-06-08
sybase的数据库问题设置吧,sp_dboption 'allow ddl in tran',db_name,true
回复
javaGirlOrBoy 2005-06-08
看分多,帮你定一下!
回复
相关推荐
发帖
Web 开发
创建于2007-09-28

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2005-06-08 04:55
社区公告
暂无公告