`
youngxu
  • 浏览: 165367 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Oracle10g中char字段在Hibernate中映射设定

    博客分类:
  • Java
阅读更多
环境Hibernate3.3.2GA+Spring2.5.6+Struts2.1.6,数据库Oracle10g,服务器tomcat中TBL_FUNC表的正确映射应该如下:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
	"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
	"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"
	>

<!-- hibernate环境配置 -->
<hibernate-mapping package="pkg">

	<class name="Func" table="TBL_FUNC">
		<id name="funcId" column="FUNC_ID" type="java.lang.Integer" >
			<generator class="native"></generator>
		</id>

		<!-- 基本字段 -->
		<property name="funcName" column="FUNC_NAME" type="java.lang.String" length="128"/>
		<property name="funcDesc" column="FUNC_DESC" type="java.lang.String" length="512"/>
		<property name="ts" type="java.lang.String">
			<column name="TS" sql-type="char" length="19" />
		</property>

	</class>
</hibernate-mapping>


其他TS字段对应Oracle10g数据库中的类型为CHAR(19)。
其中Hibernate的hibernate.hbm2ddl.auto设置为validate后,CHAR字段类型出现一些问题,现整理一下。
1、<property name="ts" type="java.lang.String">
<column name="TS" sql-type="char" length="19" />
</property>

如果设置为
<property name="ts" column name="TS type="java.lang.String" length="19" />
在启动Tomcat时直接报错:
Wrong column type in TBL_FUNC for column TS. Found: char, expected: varchar2(19)
2、根据网上搜索的资料,建议将<property name="ts" column name="TS type="java.lang.String" length="19" />修改为<property name="ts" column name="TS type="java.lang.Character" length="19" />,启动成功后,显示字段的数据只显示一个字符。

最后在网上某论坛的回复中,搜索到上述设置。在此记录下来,以供分享。
分享到:
评论
1 楼 houniao1990 2014-09-16  
楼主,请问用注释怎么写

相关推荐

    hibernate映射Oracle中LONG类型

    在 Hibernate 框架中,使用自定义类型映射 Oracle 中的 LONG 类型字段是一种常见的解决方案。通过实现 UserType 接口,我们可以定制 LONG 类型字段的读写操作。在本例中,我们定义了一个名为 CustomLong 的类,该类...

    Hibernate SQLQuery 查询Oracle char类型结果为一个字符解决方法

    其次,可以在SQL查询中使用`CAST`函数将char字段转换为`VARCHAR2`类型;最后,也可以考虑直接修改数据库表结构,将char类型改为`VARCHAR2`类型。这些方法都可以有效地解决这个问题,开发者可以根据实际情况选择最...

    Hibernate中数据类型

    然而,在与数据库交互时,这些数据类型需要与数据库中的相应字段类型进行映射。Hibernate,作为一款流行的Java持久化框架,提供了一种方便的方式来处理这种映射关系,使得我们可以轻松地在Java对象和数据库记录之间...

    DB2和Oracle的区别.pdf

    Oracle允许在WHERE子句中进行弱类型比较,如字符型字段与整型字段的直接比较,而DB2对此则更为严格,要求类型匹配。Oracle支持`REPLACE`函数,但在DB2中需要使用其他方法来实现相同功能。在子查询别名的使用上,...

    DB2和Oracle的区别.docx

    例如,Oracle允许在WHERE子句中进行弱类型判断,如字符型字段与整型比较,但在DB2中这是不被允许的。此外,Oracle支持`REPLACE`关键字,但DB2不支持,这可能导致在编写SQL语句时遇到问题。 在子查询别名的使用上,...

    hibernate利用配置文件反向生成数据库所有配置文件及方法

    关于数据类型的转换,例如在Oracle中,`boolean`类型的Java属性会被映射为`number`类型,而在MySQL中则为`char`类型,并且只接受'1'或'0'作为`true`或`false`的表示。因此,当插入`true`时,默认转换为'1',插入`...

    Hibernate-add学习

    在本部分,我们对比了三种数据库(MySQL、Oracle、SQL Server)在Hibernate配置文件中的设置差异。这对于跨数据库开发非常有用。 - **dialect**: 指定了Hibernate使用的方言,它告诉Hibernate如何处理特定数据库的...

    DB2 与ORACLE的比对.pdf

    - 在 ORM 框架如 Hibernate 中,DB2 的 DATE 字段需映射为 TIMESTAMP,否则会出现错误。 6. **分页处理**: - ORACLE 使用 ROWNUM 进行分页,如 `where rownum &lt;= 10`。 - DB2 使用 ROW_NUMBER() OVER() 结合...

    DB2 与ORACLE的比对.docx

    在 ORM 框架如 Hibernate 中,DB2 的 DATE 字段映射为 Java 的 `java.util.Date` 时,可能导致错误,需要改为 TIMESTAMP。 6. **分页处理**: - ORACLE 使用 `rownum` 进行分页,而 DB2 使用 `rownumber() over()`...

    DB2、ORACLE

    - 在DB2中,要实现类似的功能,你需要显式地将数字转换为字符串,如`WHERE '1' = CAST(1 AS CHAR)`。 2. **REPLACE关键字**: - Oracle支持`CREATE OR REPLACE`语句,允许更新已存在的对象。但在DB2中,你需要先`...

    Hibernate类型映射

    在Oracle中,由于没有原生的布尔类型,通常会使用`char(1)`、`varchar(1)`或`number(1)`来模拟,用0和1表示`false`和`true`。 理解这些映射关系有助于我们更好地设计实体类,以及正确地配置Hibernate的映射文件(如...

    hibernate 课件

    而在Hibernate框架中,这些关系同样可以通过XML配置文件或者注解的方式进行映射。 ##### 一对多映射关系示例 **User和Account之间的一对多映射关系** - **概念**: 在一对多的映射关系中,一个`User`可以拥有多个`...

    oracle入门基础教程全面详细

    ### Oracle入门基础教程知识点概述 #### 一、数据库基础 - **定义与概念**:介绍数据库的基本定义,包括什么是数据库、数据库管理系统(DBMS)、数据模型等。 - **数据库分类**:按照不同的标准对数据库进行分类,...

    华为面试题

    多对多关系在Hibernate中通过关联映射实现,通常需要一个关联表(C表)。HQL(Hibernate Query Language)可以用来处理这种关系,插入数据时同时维护关联关系。 【Oracle函数】 Nvl()用于处理NULL值,当给定的字段...

    深圳各公司java面试题

    在Oracle中创建存储过程,需要使用`CREATE OR REPLACE PROCEDURE`语句,定义过程体,包括变量声明、异常处理和执行语句。 #### Java基础知识面试题解析 **1. 实现序列化的方法?** 序列化是将对象转换为字节流的...

    java自定义注解实现由类自动生成表

    在Java编程中,自定义注解(Annotation)是一种强大的元数据机制,允许程序员在源代码中插入信息,这些信息可以被编译器、IDE或运行时环境用来进行各种处理。自定义注解使得代码更加可读,易于维护,并且可以自动化...

Global site tag (gtag.js) - Google Analytics