Hibernate 保存clob类型数据 以及关系到事务所出现的问题(写此文以防备忘)
说明:
方法A():普通的方法未实现事务;
方法B();普通方法;
方法doA();对A方法增加事务支持
方法doB():对方法B()增加事务支持
方法ntB();对方法B()声明一个新的事物
使用方式一:
A()
{
doB();
}
doB(){
//方法中保存一个Clob字段到数据库
}
按照上述调用会出现错误:Active Spring transaction synchronization or active JTA transaction with specified [javax.transaction.TransactionManager] required
使用方式二:
doA(){
ntB(){
//方法中保存一个Clob字段到数据库
}
}
使用方式2可以正确执行.
结论: 通过方式二,若doA()异常回滚,ntB()不会受到影响.
另外:把大字段保存于clob类型,在数据库表反转后需要在xxx.hbm.xml中设置对应字段的type="org.springframework.orm.hibernate3.support.ClobStringType"