Hibnerate报数据大小超出此类型的最大值错误

goldlive_8888 2009-03-23 09:44:52
我的配置是spring1.2+hibernate3+strut1.2,数据库Oracle9
数据源在tomcat中,配置为:
<Context path="/***" docBase="***" debug="0" reloadable="true">
<Resource name="jdbc/***" auth="Container"
type="javax.sql.DataSource"
username="***" password="***"
driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@*.*.*.*:1521:***"
maxActive="4" maxIdle="2"/>
<ResourceLink name="UserTransaction"
global="UserTransaction"
type="javax.transaction.UserTransaction"/>
</Context>
表的字段类型是varchar(4000);这里不能用clob,Blob(必要条件)
我想存入1000个汉字,实际输入900个就报这个错误:
- SQL Error: 17070, SQLState: null
- 数据大小超出此类型的最大值: 2700
- Could not synchronize database state with session
- [e] (HibernateTemplate): encountered SQLException [数据大小超出此类型的最大值: 2700]; nested exception is java.sql.SQLException: 数据大小超出此类型的最大值: 2700
org.springframework.jdbc.UncategorizedSQLException: (HibernateTemplate): encountered SQLException [数据大小超出此类型的最大值: 2700]; nested exception is java.sql.SQLException: 数据大小超出此类型的最大值: 2700
java.sql.SQLException: 数据大小超出此类型的最大值: 2700
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179)
at oracle.jdbc.ttc7.TTCItem.setArrayData(TTCItem.java:147)
at oracle.jdbc.dbaccess.DBDataSetImpl.setBytesBindItem(DBDataSetImpl.java:2461)
at oracle.jdbc.driver.OraclePreparedStatement.setItem(OraclePreparedStatement.java:1155)
at oracle.jdbc.driver.OraclePreparedStatement.setString(OraclePreparedStatement.java:1572)
at org.apache.tomcat.dbcp.dbcp.DelegatingPreparedStatement.setString(DelegatingPreparedStatement.java:131)
at net.sf.hibernate.type.StringType.set(StringType.java:26)
at net.sf.hibernate.type.NullableType.nullSafeSet(NullableType.java:48)
at net.sf.hibernate.type.NullableType.nullSafeSet(NullableType.java:35)
at net.sf.hibernate.persister.EntityPersister.dehydrate(EntityPersister.java:387)
at net.sf.hibernate.persister.EntityPersister.insert(EntityPersister.java:460)
at net.sf.hibernate.persister.EntityPersister.insert(EntityPersister.java:436)
at net.sf.hibernate.impl.ScheduledInsertion.execute(ScheduledInsertion.java:37)
at net.sf.hibernate.impl.SessionImpl.execute(SessionImpl.java:2449)
at net.sf.hibernate.impl.SessionImpl.executeAll(SessionImpl.java:2435)
at net.sf.hibernate.impl.SessionImpl.execute(SessionImpl.java:2392)
at net.sf.hibernate.impl.SessionImpl.flush(SessionImpl.java:2261)
at net.sf.hibernate.transaction.JTATransaction.commit(JTATransaction.java:52)
at org.springframework.orm.hibernate.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:472)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:397)
at org.springframework.transaction.interceptor.TransactionAspectSupport.doCommitTransactionAfterReturning(TransactionAspectSupport.java:243)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:66)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:144)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:174)
我试了用了Oracle10的ojdbc14.jar放在tomcat\common\lib下,可是不行。那位达人能提供些解决的方案,在下不胜感激!
...全文
651 10 打赏 收藏 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
ljh0242 2009-03-24
  • 打赏
  • 举报
回复
把字段值改大点就可以了
goldlive_8888 2009-03-24
  • 打赏
  • 举报
回复
我现在已经实现了插入1000个字段,方法是在Hibernate的回调函数中使用JDBC,但有个问题,如果插入的内容有单引号就会报错,我是在存入数据库之前把'变成’,下面是代码,如果那位有同样的问题,希望能有所帮助。
public void saveAnswerRecord(final AnswerRecord answerRecord){
getHibernateTemplate().execute(new HibernateCallback(){
public Object doInHibernate(Session session) throws HibernateException, SQLException {
String sql = "insert into TBL_ANSWER_RECORD (" +
"RECORD_ID,MAIN_SHEET_FLOW_NO,BEGIN_TIME,END_TIME," +
"ANSWER_AGENT_CODE,ANSWER_CONTENT,RECORD_TYPE,RECORD_RESULT) " +
"values(" +
"\'" + answerRecord.getRecordID() + "\'," +
"\'" + answerRecord.getMainSheetFlowNO()+ "\'," +
"\'" + answerRecord.getBeginTime() + "\'," +
"\'" + answerRecord.getEndTime() + "\'," +
"\'" + answerRecord.getAnswerAgentCode() + "\'," +
"\'" + answerRecord.getAnswerContent() + "\'," +
"\'" + answerRecord.getRecordType() + "\'," +
"\'" + answerRecord.getResult() + "\'" +
")";
Connection conn = session.connection();
Statement stmt = conn.createStatement();
boolean result = stmt.execute(sql);
if(!result){
System.out.println("*********插入 TBL_ANSWER_RECORD 成功************");
}
return null;
}
});
}
luojihaidao 2009-03-23
  • 打赏
  • 举报
回复
学习!
Jacky_Zhu_1983 2009-03-23
  • 打赏
  • 举报
回复
这里不能用clob,Blob?
那你试下 nvarchar(4000);
java__king 2009-03-23
  • 打赏
  • 举报
回复
没碰到过,看下面的高手怎么说.
goldlive_8888 2009-03-23
  • 打赏
  • 举报
回复
不用clob,blob的原因是这张表以前就有,如果字段改变成clob,blob后会放到另外一个分区,不方便Oracle读取,速度慢,也不利于数据库维护。
mumu_java 2009-03-23
  • 打赏
  • 举报
回复
改成varchar2试试,或者加大varchar的长度,加到8000试试.
ee4456 2009-03-23
  • 打赏
  • 举报
回复
我下去查了一下nvarchar2也是4000大小。。。所以我觉得不能解决问题
ee4456 2009-03-23
  • 打赏
  • 举报
回复
以前有老的数据类型好像是long吧,也可以储存2GB的内容。。你也可以试一下。。
ee4456 2009-03-23
  • 打赏
  • 举报
回复
varchar2,最大是4000没错,但是JDBC一般会把一个汉字转成3个字节,那么最多也就是大概666个汉字左右,不过这个是不固定的,jdbc有解决办法,但是hibernate 我就不知道了。。nvarchar不知道行不行,为什么不能用clob呢?可以解释一下原因吗?
内容概要:本文围绕基于物理场的动态模式分解(piDMD)展开研究,重点探讨其在流体力学、热传导及多物理耦合系统中的建模与应用。通过Matlab代码实现,将传统的动态模式分解(DMD)方法与物理场控制方程相结合,引入物理约束以增强数据驱动模型的物理一致性,从而提升对复杂非线性系统的模态提取精度与长期预测能力。文章系统阐述了piDMD的理论基础、数学推导过程与算法实现步骤,并结合典型物理场仿真案例(如Navier-Stokes方程驱动的流场演化)进行验证,展示了其在降阶建模、主导模态识别和时空动态可视化方面的优越性能,适用于高维、强耦合、非平稳系统的分析与优化。; 适合人群:具备一定数值计算、流体力学、控制理论或数据驱动建模背景,熟悉Matlab编程与线性代数运算,从事科学研究、工程仿真或系统辨识工作的研究生、科研人员及工程师。; 使用场景及目标:①实现对流场、温度场等物理场的高效降阶建模与动态行为预测;②提取符合物理规律的关键模态,用于系统稳定性分析与控制设计;③支撑复杂系统的状态估计、异常检测与优化调控等下游任务。; 阅读建议:建议读者结合提供的Matlab代码逐行调试与运行,深入理解piDMD算法中物理约束的嵌入方式及其对模态质量的影响,同时可尝试将其迁移至其他偏微分方程描述的物理系统中进行拓展验证与应用。
内容概要:本文研究了在峰谷分时电价引导下,基于多目标优化遗传算法NSGA-II的电动汽车充电负荷优化问题。通过构建以电网负荷波动最小化和用户充电成本最低为核心的多目标优化模型,利用NSGA-II算法求解获得帕累托最优解集,实现对大规模电动汽车充电行为的有序引导。文中系统阐述了峰谷电价激励机制的设计原理、电动汽车充电负荷的数学建模方法、多目标优化问题的形式化表达以及NSGA-II算法的具体实现流程,并借助Matlab平台进行仿真验证,结果表明该策略能有效平抑电网负荷峰谷差、降低用户充电支出并提升电力系统的运行效率与稳定性。; 适合人群:具备一定电力系统基础知识和Matlab编程能力,从事智能电网、电动汽车调度、需求侧管理等相关领域的研究生或科研人员。; 使用场景及目标:①研究峰谷电价政策对电动汽车充电行为的影响机制;②掌握NSGA-II算法在电力系统多目标优化中的具体应用;③实现电动汽车集群的有序充电调度以改善电网负荷曲线; 阅读建议:此资源结合了电力经济学与智能优化算法,建议读者在学习过程中重点关注模型构建与算法实现的衔接部分,动手复现仿真代码以深入理解参数设置与结果分析过程。
详情可查看下方数据集可视化效果。 【数据集概况】 · 检测类别(中文):[电梯(elevator)] · 训练集:1468 张 · 验证集:157 张 · 测试集:158 张 · 总计:1783 张 该数据集聚焦于各类建筑内部及外部环境中的电梯目标检测任务,涵盖住宅楼、办公楼、商场、酒店等多种典型场景下的电梯结构。图像采集覆盖不同光照条件、材质类型与安装位置,充分体现了实际应用中电梯的多样性与复杂性,为智能楼宇管理、安防监控及无障碍设施识别等方向提供了高质量的视觉基础支持。... 【训练曲线与评估图】 【模型训练配置】 参数 | 值 模型 | yolo26n 训练轮数 | 100 epochs 输入尺寸 | 640x640 批次大小 | 24 优化器 | auto 初始学习率 | 0.01 训练设备 【关键指标汇总】 训练了 72 个 epoch,最终轮指标: 指标 | 数值 mAP50 | **0.9446** mAP50-95 | 0.6531 Precision | 0.9305 Recall | 0.8777 train/box_loss | 0.5807 train/cls_loss | 0.3505 val/box_loss | 1.0020 val/cls_loss | 0.6208 【训练过程分析】 72 轮训练后 mAP50 达到 0.9446,模型收敛良好。Loss 曲线前段快速下降,后段趋于平稳,val_loss 无反弹,没有明显过拟合。但 mAP50-95 为 0.6531,和 mAP50 差距 0.29,定位精度仍有优化空间。 【模型性能评估】 Precision 0.9305、Recall 0.8777,精度高于召回,存在一定漏检。 【预测效果展示】 验证集预测效果较好,检测框基本准确覆盖电梯,置信度整体偏高。 【改进建议】 1. 丰富场景...

81,108

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧