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

Hibernate生成sql语句中列名问题

阅读更多

今天遇到一个Hibernate问题,在程序中的hbm.xml映射文件中数据库表的列名是首字母大写(如:ProductUrl),数据库中也是首字母大写(如:ProductUrl),但是Hibernate生成的sql语句中自动把第二个单词的大写字母变成了下划线加小写(如:product_url),最终报错:product_url在数据库表中找不到。Google上搜了很久没找到原因,偶然一下发现一篇文章http://www.kuqin.com/java/20080821/14649.html 从这里找到了原因,hibernate有一个自定义命名策略,org.hibernate.cfg.ImprovedNamingStrategy这个是hibernate默认的策略,其中包含了把列名的大写自动变成小写并加上下划线。

然后我再项目中果真发现了这个配置

<bean id="mySessionFactory"
	class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
	<property name="dataSource" ref="myDataSource"></property>
	<!-- 
	<property name="namingStrategy">
		<bean class="org.hibernate.cfg.ImprovedNamingStrategy" />
	</property>
	-->
	<property name="hibernateProperties">

  

 然后我把这部分配置注释掉就OK了。

 

在搜索这个问题的时候看到有很多人在问怎样让hibernate把列的大写转成下划线加小写,我想这个自定义命名策略肯定是可以实现,而且我们自己也可以去继承ImprovedNamingStrategy这个类然后重写他的方法从而实现我们需要的自定义命名,具体请参考http://www.kuqin.com/java/20080821/14649.html,这篇文章中还介绍了其他一些Hibernate下的自定义架构实现,在此非常感谢此文章的作者提供的宝贵资料。

 

 

分享到:
评论
2 楼 javalover00000 2011-05-11  
回复: osacar

一些费了很大劲解决了的问题,就写出来,别人或许也会遇到~~呵呵,
1 楼 osacar 2011-05-10  
总算找到了解决的方法了。今天郁闷了一下午呢。

相关推荐

    Hibernate生产SQL语句

    本文将深入探讨如何模仿Hibernate生成SQL语句,以及如何利用Java反射技术来实现这一过程。 首先,我们需要理解Hibernate的工作原理。Hibernate的核心在于它的Query API,它提供了Criteria、HQL(Hibernate Query ...

    hibernate数据库通用SQL代码

    对于更复杂的SQL操作,可能需要使用原生的SQL语句。这个方法接收一个SQL字符串,通过Session获取数据库连接,创建PreparedStatement,执行查询,处理结果集,将其转换为ArrayList并返回。注意,这种方法需要手动处理...

    使用Annotation和反射实现Bean转SQL语句Demo

    在这个`BeanToSqlConverter`类中,我们首先获取Bean类的`@Table`注解来确定表名,然后遍历所有字段,找到带有`@Column`注解的属性,将其列名添加到SQL语句中。最后,生成一个参数占位符的值列表,用于后续绑定实际值...

    生成hibernate映射文件工具

    hibernate映射文件是Java开发中用于对象关系映射(ORM)的重要组成部分,它将数据库表与Java类之间的关系进行定义,使得开发者无需编写大量的SQL语句,就能实现对数据库的操作。`生成hibernate映射文件工具`是为了...

    HIbernate Jpa 生成entities

    Hibernate JPA 是一个开源的对象关系映射(ORM)框架,它允许开发者用面向对象的方式来处理数据库操作,而不是传统的SQL语句。JPA 提供了一种标准的方式,通过注解或者XML配置将Java类映射到数据库表上,使得数据库...

    java实体转mysql建表语句

    这些工具能够解析Java源代码,从中提取实体类信息并生成相应的SQL语句。 4. **MyBatis Generator**: MyBatis Generator是一个强大的工具,可以自动生成Java实体类、Mapper接口、Mapper XML文件以及建表语句。只需...

    hibernate注解

    Hibernate使用Java Reflection API和ASM库来解析注解,将注解信息转化为元数据,进而生成SQL语句。注解如`@Table`定义表名,`@Column`定义列名,`@OneToMany`、`@ManyToOne`、`@OneToOne`和`@ManyToMany`描述关联...

    hibernate主键生成策略详解

    在内部,Hibernate 会调用 `org.hibernate.id.IncrementGenerator` 类中的 `generate()` 方法来获取当前主键的最大值,通常是通过执行 `SELECT MAX(idColumnName) FROM tableName` 这样的 SQL 语句来完成的。...

    hibernate 和hibernate_annotations(中文API).pdf帮助文档

    1. 避免SQL硬编码:使用HQL或Criteria API,使得SQL语句与业务逻辑分离,易于维护。 2. 缓存机制:一级缓存(Session级别的缓存)和二级缓存(SessionFactory级别的缓存),提高性能。 3. 支持复杂的关联关系:...

    Java应用中使用Hibernate.pdf

    此外,它还包括了用于调试的`show_sql`属性,设置为`true`可以打印出Hibernate生成的SQL语句,帮助开发者调试程序。`hibernate.properties`文件也是一个常见的配置方式,这里没有显示具体内容,但通常用于设置...

    Hibernate较完整资料

    Hibernate 是一个开源的对象关系映射(ORM)框架,它允许开发者使用 Java 对象来操作数据库,而无需直接编写 SQL 查询语句。这个资料包含了配置 Hibernate 和进行基本操作所需的元素。 在 `hibernate.cfg.xml` 文件...

    hibernate框架实例

    Hibernate 是一款强大的Java对象关系映射(ORM)框架,它极大地简化了数据库操作,使得开发者可以使用面向对象的方式来处理数据库事务,而无需关注底层的SQL语句。本实例旨在帮助初学者更好地理解Hibernate框架的...

    J2EE Hibernate-2.ppt

    Hibernate是J2EE中一个非常重要的持久化框架,它简化了数据库操作,使得开发者可以更加专注于业务逻辑而不是底层的SQL语句。本教程将围绕“J2EE Hibernate-2.ppt”展开,详细介绍如何使用Hibernate进行数据库操作。 ...

    myeclipse配置hibernate时出错

    Hibernate可以自动生成SQL语句,自动执行,使得Java开发者只需了解简单的对象操作,而无需花费大量时间手动编写SQL语句。同时,Hibernate还提供了一种更为便捷的方式来处理数据库操作中的映射问题,极大地提高了开发...

    hibernate学习笔记文档

    - 配置 Hibernate 运行时的行为,如显示 SQL 语句、格式化 SQL 输出等。 #### 五、Hibernate 高级特性 - **一对多与多对多映射**: - 在实体类设计时,通过关联属性定义一对多或多对多的关系。 - 在 XML 映射...

    Hibernate中文参考文档学习

    - **对象关系映射(ORM)**: ORM是将数据库中的数据模型转换为面向对象的模型,使得开发者可以使用对象来操作数据,而无需直接编写SQL语句。 - **Session**: Hibernate的核心接口,用于与数据库进行交互,提供了...

    bean对象生成数据表

    4. **执行SQL**:在数据库中执行生成的SQL语句,创建实际的数据库表。 5. **验证与调整**:检查生成的表结构是否满足需求,如有必要,进行手工调整,如添加索引、主键约束或外键等。 在这个过程中,可能用到的工具...

    hibernate_reference使用指南全

    说明如何定制 Hibernate 的命名策略,以控制生成的 SQL 语句中的表名和列名。 - **3.7 XML 配置文件** 介绍如何使用 XML 文件来配置 Hibernate,这种方式较为直观且易于管理。 - **3.8 J2EE 应用服务器集成** ...

    Hibernate动态建表

    深入源码层面,可以了解Hibernate是如何读取元数据并生成SQL语句来创建或更新表的。这涉及到`org.hibernate.tool.hbm2ddl.SchemaExport`类,它负责处理`hibernate.hbm2ddl.auto`的各个选项,并调用数据库方言...

Global site tag (gtag.js) - Google Analytics