维护一个几年前的代码。修改到一个问题,是hibernat保存的问题
Hibernate用的是2.x.情况是这样的,保存一个实体,报错,说超出最大长度。可是我看数据库这个字段类型varchar2(4000),配置文件长度也够大呀,理论上是不会出现这种问题的。
后来查看了下,有人这样解释的,
JDBC在转换过程中对字符串的长度做了限制。这个限制和数据库中字段的实际长度没有关系。而setCharacterStream()方法可以逃过字符转换限制,也就成为了解决此问题的方案之一。JDBC对转换字符长度的限制是为了转换过程中的数据扩展。根据实际测试结果,在ZHS16GBK字符集和 thin驱动下,2000-4000长度的varchar字段都只能插入1333个字节(约666个汉字)。
故解决PreparedStatement的setString中字符串长度问题可以有两种办法:
1、使用setCharacterStream()方法;
2、使用OCI驱动连接Oracle数据库。
后来按这种方法修改还是报错。干脆,傻一下,先令这个字段为"",在Hibernate保存一下,在用sql语言拼接出update语句,这样就保存成功了。
不过在这途中,遇见了个问题,我直接在数据库里修改数据,添加2000个汉字,报处STR绑定值的结尾null字符缺失,但是我用上面的方法都保存了2000个汉字,数据库还有记录 ,这怎么原因呀?
分享到:
相关推荐
例如,当你调用`session.saveOrUpdate(entity)`或`entityManager.persist(entity)`时,Hibernate会将Clob和Blob的内容正确地保存到数据库中。 当从数据库中检索这些字段时,同样可以通过Hibernate的API获取。例如,...
这篇文章将详细讲解如何在Hibernate中保存这两种特殊类型的数据。 BLOB用于存储二进制大对象,如图片、音频或视频文件等;而CLOB则用于存储字符型的大数据,例如长文本、XML文档等。在Java中,Blob和Clob是JDBC API...
标题中的"hibernate保存不到数据1"是一个关于Hibernate框架在尝试保存数据到数据库时遇到问题的场景。描述提到了一个具体的解决方案,即通过在`hibernate.cfg.xml`配置文件中设置`connection.autocommit`属性为`true...
在探讨Hibernate注入的三种方式时,我们主要关注的是如何在Spring框架中整合Hibernate,以便实现对象关系映射(ORM)并进行数据库操作。这三种方式包括:通过`LocalSessionFactoryBean`配置、直接注入`...
### Hibernate保存图片知识点详解 #### 一、引言 在Web开发中,处理用户上传的图片是一项常见的需求。本文档将详细介绍如何利用Hibernate框架将图片数据直接存储到数据库的Blob字段中。通过这种方式,可以避免在...
在Java开发中,尤其是涉及到大数据量的处理时,人们往往会质疑ORM框架,如Hibernate,是否适合进行批量数据操作。然而,实际上,通过适当的技术手段,我们可以有效地解决Hibernate在批量处理时可能出现的性能问题。...
同时,由于Mycat提供了自己的SQL解析和执行机制,因此在Hibernate的`hibernate.dialect`属性中,应选择与Mycat兼容的方言,如`org.hibernate.dialect.MySQL5InnoDBDialect`。 接下来,创建实体类并进行映射。在...
标题中的“启动tomcat报错org.hibernate.cache.CacheProvider”指的是在尝试启动Apache Tomcat服务器时遇到了与Hibernate缓存提供者相关的错误。这通常涉及到Hibernate框架的配置或运行时环境问题。Hibernate是一个...
本文将深入探讨如何在Hibernate中处理Many-to-Many关系的级联保存、级联更新和级联删除。 一、Many-to-Many关系基础 在数据库设计中,Many-to-Many关系意味着两个实体之间存在多对多的关系。例如,学生可以选修多门...
### Hibernate常见错误及解决办法 #### 一、Nodefaultconstructorforentity 错误 **问题描述**:在使用Hibernate执行查询语句时,系统抛出`Nodefaultconstructorforentity`错误。 **可能原因**:该错误通常是由于...
问题描述 用SpringBoot + Spring Data JPA操作数据库 项目启动的时候 报了一个错 SpringBoot的版本是2.2.6.RELEASE org.springframework.beans.factory.BeanCreationException: Error creating bean with name '...
本教程“传智播客hibernate教程_保存多对一关联关系的更进一步分析”深入探讨了如何在Hibernate中处理多对一的关联关系。这种关联意味着一个实体(多方)可以与多个其他实体(一方)相关联,而每个其他实体只与一个...
本资源摘要信息主要总结了WEB开发中常见的报错处理方法,涵盖了Hibernate、JSP、Struts等多个软件开发中的错误处理技巧。这些知识点对于初学者和初级开发者来说非常有价值,可以帮助他们在开发中快速解决问题。 1. ...
"自动生成 Hibernate 映射文件和实体类" 自动生成 Hibernate 映射文件和实体类是使用 MyEclipse 工具来实现的,这可以大大提高开发效率,减少开发时间。下面将详细介绍如何使用 MyEclipse 自动生成 Hibernate 映射...
在本问题中,我们遇到了一个特定的错误,即“weblogic10.3 org.hibernate.hql.ast.HqlToken报错”,这涉及到Hibernate ORM框架和其在WebLogic上的运行。让我们深入探讨这个问题,以及可能的解决方案。 首先,`org....
6. **事件监听机制**:允许开发者在特定的生命周期事件(如加载、保存、更新、删除等)上添加自定义行为。 7. **关联映射**:支持一对一、一对多、多对一和多对多等各种关联关系的映射,使得对象间的关联关系能够...
Hibernate是一个开源的对象关系映射(ORM)框架,它封装了JDBC(Java Database Connectivity)的复杂性,并允许Java开发者以面向对象的方式操作数据库。Hibernate框架被广泛应用于企业级Java应用程序中,可以与...
11. **事件监听器**:Hibernate允许注册事件监听器,对持久化对象的各种操作(如保存、更新、删除等)进行拦截和自定义处理。 以上就是`hibernate3.jar`中所包含的关键知识点。理解并熟练使用这些概念,可以帮助...
tomcat报错如下,需更换c3p0包 org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.connections.spi.ConnectionProvider] at org.hibernate.service....