昨天出了一个奇怪的问题,hibernate通过实体Id(char(10)型)取得数据,session.find("from TableName where id=?","value");取不到数据,但数据库里是有这个条数据。真奇怪,后来用pl/sql看数据库,鼠标点到Id那时,可以看到内容后面还有一些空格,带着期望与质疑把字段里的值自制过来, session.find("from TableName where id=?","value ");后发现可以。我特别试了下connection.createStatement("select * from table_name where id='value'");则正常取数据,session.find("from TableName where id=?","value");而却找不到数据,然后又试了下
ptmt = connection.prepareStatement(select * from table_name where id=?");
ptmt.setString(1,"year");
这样也不行,以是结论是:jdbc驱动PrepareStatement对char字段类型的查找问题,因为hibernate是用PrepareStatement的,自然,hibernate对char对应的属性条件查找出现找不到的情况,
解决办法是:
1.属性用TRIM函数处理:session.find("from TableName where TRIM(id)=?","value");
2.char改为varchar2类型
今天试了下mysql,它不会这样的情况,所以结论是:Oracle JDBC PreparedStatement的bug(有可能它故意这样)
分享到:
相关推荐
通过对char类型字段的特殊处理,可以确保mybatis框架对Oracle数据库的查询操作的正确性。 知识点: * Oracle数据库中char类型字段的特性 * 使用trim()函数去掉char类型字段的空格 * 将char类型字段改为varchar2...
【Oracle 数据类型详解】 在 Oracle 数据库中,数据类型是用来定义和存储不同类型数据的格式。以下是一些常见的 Oracle 数据类型: 1. CHAR(n): 定长字符串类型,最多可存储 2000 个字节。如果未指定长度,默认为 ...
通过Connection、Statement、PreparedStatement和ResultSet等接口,Java程序员可以执行SQL语句、处理查询结果。JDBC的连接池技术提高了性能和资源利用率。 第七讲:Oracle函数 Oracle提供了丰富的内置函数,如数学...
在进行数据迁移之前,首先需要了解SQL Server与Oracle之间不同类型的数据类型的映射关系。下面是两种数据库管理系统之间的主要数据类型对应关系: | SQL Server Data Type | Oracle Data Type | |-----------------...
Java 存取 Oracle 中的 CLOB 类型数据 Java 存取 Oracle 中的 CLOB 类型数据是 Java 开发中的一项重要任务。CLOB(Character Large OBject)是一种大型字符对象,用于存储大型文本数据,最大可存储 4GB 数据。在 ...
这需要对Oracle的数据类型、游标、事务管理有深入理解。创建并初始化环境和会话,然后编译和执行SQL语句。 5. **代码示例**:在VC++中,可以使用以下代码片段建立一个简单的ODBC连接: ```cpp #include #...
Oracle数据库是全球广泛使用的大型关系型数据库管理系统之一,其丰富的内置函数使得数据处理变得更为便捷。JDBC(Java Database Connectivity)则是Java编程语言与各种数据库交互的桥梁,它提供了标准的API来执行SQL...
- **数据类型**:包括数值型(NUMBER、BINARY_INTEGER、INTEGER等)、字符型(VARCHAR2、CHAR、LONG等)、日期型(DATE)和PL/SQL对象类型。 2. **PL/SQL与SQL的结合** - **嵌入式SQL**:PL/SQL可以直接嵌入SQL...
在Oracle中,数据类型主要包括数值类型(如NUMBER)、字符串类型(VARCHAR2、CHAR)、日期时间类型(DATE)、二进制数据类型(BLOB、CLOB)以及复合类型如对象类型和集合类型。理解这些数据类型对于正确存储和操作...
分页是Web应用程序中常见的需求,特别是在处理大量数据时,它能够提高用户体验,避免一次性加载过多数据导致页面响应变慢。 首先,我们需要有一个Oracle数据库表来存储数据。在提供的示例中,我们看到一个名为`t_...
RETURN TO_CHAR(dt, 'YYYYMM'); END; ``` 2. **创建分区策略**: 接下来,定义一个基于上述函数的分区策略,这可以是范围分区或列表分区。范围分区通常更适合按时间进行连续的分区。 ```sql CREATE ...
本资源“Oracle函数大全”显然是一个集成了Oracle数据库常用函数的参考文档,旨在帮助开发者和DBA更有效地进行数据处理和查询。 在Oracle SQL中,函数分为多种类型,包括算术函数、字符串函数、日期/时间函数、转换...
char[] passtext = (); // 这里应该是获取用户输入密码 String str = new String(passtext); // 将密码转换为字符串 ``` - 数据库查询: ```java ResultSet rs = null; try { st = (); // 应该是获取...
char[] 缓存主要用于存储字符类型数据(如 CHAR、VARCHAR2、NCHAR 等),而 byte[] 缓存则用于存储其他类型的数据。 - **缓存分配时机**:缓存空间是在 SQL 语句首次执行时分配的,而不是在查询结果返回后才分配。这...
在 JSP 页面中,我们可以利用 JavaBean 或者 Servlet 来处理分页逻辑。以下是一个简单的示例,展示了如何通过 SQL 查询语句实现基本的分页功能: 1. **确定每页显示的数据量**:比如每页显示 10 条记录。 2. **计算...
- userSex:Char类型,长度为4 - userAge:整型 为了与Oracle数据库进行交互,我们需要编写DBManager类。在这个类中,我们定义了数据库连接的相关信息,包括URL、用户名和密码。URL的格式通常是`jdbc:oracle:thin:@...
这些类型转换函数使得在处理不同类型的数据时具有极大的灵活性。 例如,`::` 运算符是PostgreSQL中进行类型转换最常用的方式,它允许我们将一个表达式强制转换为目标数据类型。例如,`text::integer` 将文本字符串...