- 浏览: 109150 次
- 性别:
最新评论
-
douglas_lhs:
如果是搜索的话,是不是就要在action里面定义页面中的属性, ...
pager-taglib 的使用 -
wayer:
请问全景显示到底是怎么回事呢?
是不是先用软件做好全景图,然后 ...
PTViewer 全景显示 -
wangjian3q:
请问 为什么 我的 项目加了 urlrewrite
好像是没 ...
[转]UrlRewrite Filter -
MrLee23:
<context-param>
& ...
配置Spring 支持 Web session,request -
MrLee23:
给你代码整理下,你的看的有点别扭`
<context ...
配置Spring 支持 Web session,request
- <id name="id" type="java.lang.Integer">
- <column name="id" />
- <generator class="assigned" />
- id>
- <property name="gzzh" type="java.lang.String">
- <column name="gzzh" length="20" />
- property>
- <property name="www" type="java.lang.String">
- <column name="www" length="30" />
- property>
- <many-to-one name="wnote" class="test.db.Www" column="gzzh" lazy="false" update="false" insert="false"/>
环境:Oracle8i,Hibernate3.1.3
2张表都是三个字段,然后进行对象查询
2种情况的映射文件都是相似的,只是属性具体名称稍有不同
|
加黑加粗的是man-to-one对应的外键. |
A. |
Hibernate: select this_.id as id2_0_, this_.gzzh as gzzh2_0_, this_.www as www2_0_ from test_user this_ |
B |
Hibernate: select this_.id as id0_0_, this_.SQR as SQR0_0_, this_.DWDM as DWDM0_0_, this_.sqr as sqr0_0_ from NDZJXX this_ |
|
B.看加红的地方,却凭空多出来了一个字段 |
这个是因为什么呢?
这二种情况下的语句都能执行,也不影响最后取出来的结果。
大家知道Criteria的限制结果记录数目的时候 setFirstResult(0).setMaxResults(100)
生成的SQL是形如 select * from ( … ) where rownum <= ?
A情况当然是没有任何问题的。
B情形如下:
select * from ( select this_.id as id0_0_, this_.SQR as SQR0_0_, this_.DWDM as DWDM0_0_, this_.sqr as sqr0_0_ from NDZJXX this_ ) where rownum <= ?
这个时候就有问题了:
ORA-00918: column ambiguously defined
对B情况下使用HQL也是出现同样的问题。
这个让我很疑惑,目前我在B情况下只好规避使用Criteria的限制结果记录数目的操作,改用Native Sql,
评论
<br/>
<div class='code_title'>xml 代码</div>
<div class='dp-highlighter'>
<div class='bar'> </div>
<ol class='dp-xml' start='1'>
<li class='alt'><span><span class='tag'><</span><span class='tag-name'>property</span><span> </span><span class='attribute'>name</span><span>=</span><span class='attribute-value'>"gzzh"</span><span> </span><span class='attribute'>type</span><span>=</span><span class='attribute-value'>"java.lang.String"</span><span class='tag'>></span><span> </span></span></li>
<li class=''><span> <span class='tag'><</span><span class='tag-name'>column</span><span> </span><span class='attribute'>name</span><span>=</span><span class='attribute-value'>"gzzh"</span><span> </span><span class='attribute'>length</span><span>=</span><span class='attribute-value'>"20"</span><span> </span><span class='tag'>/></span><span> </span></span></li>
<li class='alt'><span> <span class='tag'><!----><span class='tag-name'>property</span><span class='tag'>></span><span> </span></span></span></li>
<li class=''><span> <span class='tag'><</span><span class='tag-name'>many-to-one</span><span> </span><span class='attribute'>name</span><span>=</span><span class='attribute-value'>"wnote"</span><span> </span><span class='attribute'>class</span><span>=</span><span class='attribute-value'>"test.db.Www"</span><span> </span><span class='attribute'>column</span><span>=</span><span class='attribute-value'>"gzzh"</span><span> </span><span class='attribute'>lazy</span><span>=</span><span class='attribute-value'>"false"</span><span> </span><span class='attribute'>update</span><span>=</span><span class='attribute-value'>"false"</span><span> </span><span class='attribute'>insert</span><span>=</span><span class='attribute-value'>"false"</span><span class='tag'>/></span><span> </span></span></li>
</ol>
</div>
Hibernate生成的sql<br/>
<span class='postbody'>select this_.id as id2_0_, <font color='#ff00ff'><span style='font-weight: bold;'>this_.gzzh as gzzh2_0_</span></font>, this_.www as www2_0_ from test_user this_<br/>
<br/>
如果将<br/>
</span><span><span class='tag'><</span><span class='tag-name'>column</span><span> </span><span class='attribute'>name</span><span>=</span><span class='attribute-value'>"gzzh"</span><span> </span><span class='attribute'>length</span><span>=</span><span class='attribute-value'>"20"</span><span> </span><span class='tag'>/></span><span> <br/>
改为<br/>
</span></span><span><span class='tag'><</span><span class='tag-name'>column</span><span> </span><span class='attribute'>name</span><span>=</span><span class='attribute-value'>"GZZH"</span><span> </span><span class='attribute'>length</span><span>=</span><span class='attribute-value'>"20"</span><span> </span><span class='tag'>/></span><span> <br/>
sql将变为<br/>
</span></span><span class='postbody'>select this_.id as id2_0_, <font color='#ff00ff'><span style='font-weight: bold;'>this_.GZZH as gzzh2_0_</span></font>, this_.www as www2_0_ from test_user this_<br/>
<br/>
<strong style='background-color: rgb(255, 255, 255);'><font color='#000000' style='background-color: rgb(255, 204, 153);'>但是many-to-one的column如果大小写和外键那个属性的大小写不一样的话,hibernate生成的sql就会出现我B情况下的一个大写的GZZH,一个小写的gzzh 二个字段,从而出现了这个隐含的现象。</font></strong><br/>
在本地已经测试过了,看到console出现的sql我终于可以控制住这个多出来的小尾巴了。happy...<br/>
<br/>
<br/>
我的hibernate映射文件一般都是由工具生成的,而数据库的字段不管大小写都不会影响操作,所以我从不曾注意到这种细节,的确让我想象不到问题原因如此的简单。<br/>
<br/>
Thanks.<br/>
</span>
肯定是你两个地方写的不一样,产生这样的现象就不奇怪了。
具体情况如下:
A.Test_User(n)--(1)Test_Www
字段gzzh是外键,对应Test_Www的主键
B.Ndzjxx(n)--(1)User
字段sqr是外键,对应User的主键
---------------------------
就是分别对Test_User和Ndzjxx进行最简单的查询
Criteria.forClass(XXXX.class)
criteria.list();
就是这个操作hibernate生成的sql语句如上,但是Ndzjxx的查询多出来了一个字段
你还是二种分开写吧.把代码贴完整点
发表评论
-
请问Hibernate中Criteria Query可以使用原生sql作为排序条件么?
2007-01-10 12:01 4122正常情况下是 addOrder(Order.desc(&quo ... -
疑问:Spring配置Quartz例子出错,请看下.谢谢
2006-12-13 14:35 23971研究了一天,在官方论坛也查询了很多,就是锁定不了原因。请各位朋 ... -
配置Spring 支持 Web session,request
2006-12-11 23:13 7244费了1天劲,终于琢磨出来了。。。。 配置Spring使得支持S ... -
Hibernate 要点
2006-11-24 08:32 1685Hibernate 如果采用 ThreadLocal ... -
pager-taglib 的使用
2006-11-22 23:36 4464Pager-taglib 2.0 是一套分页标签库,可以灵 ... -
Confluence 无限制使用
2006-11-22 21:36 123一直很喜欢使用Confluence,可是它是商业软件,要收钱的 ... -
[转]UrlRewrite Filter
2006-11-22 21:17 1663一:首先在到官方站点下载最新的jar文件 http://tuc ... -
[转]Tomcat 5.0.28 连接池配置
2006-11-22 09:58 3004其实Tomcat的连接池配置并不是很难,但也花费了我一些时间。 ... -
[转]Tomcat类加载机制
2006-11-22 08:58 2037TOMCAT源码分析(启动框架 ... -
Log4j应用
2006-11-23 11:20 25091.Log4j初始化: 最简单的配置方式:将配置文件取名log ... -
JasperReport
2006-11-19 20:02 101在进行HTML,Excel, RTF格式,或者干脆直接打印到打 ... -
PTViewer 全景显示
2006-11-19 00:03 3313全景显示 http://www.fsoft.it/panora ... -
XStream使用学习
2006-11-18 17:46 6677java 代码 import java.io. ... -
全景展示 - ptviewer.jar
2006-11-17 00:04 83全景英文名为Panorama,又叫虚拟全景、全景虚拟现实等, ... -
开发和使用JSP自定义标签过程
2006-11-16 23:56 1849开发和使用JSP自定义标签过程: 1.开发标签实现类. H ... -
log4j的配置方法
2006-11-16 23:35 88平时都是使用了一个专门的servlet来初始化log4j,刚看 ... -
使用xStream进行java object<-->xml之间的转换
2006-11-16 23:28 18958官方网站:http://xstream.codehaus.or ...
相关推荐
SQL实体生成器是一种工具,它能自动生成与数据库表结构对应的编程语言中的对象模型,通常在ORM(对象关系映射)框架中使用。这个工具极大地简化了开发过程,避免了手动编写大量的数据访问代码。"SQL实体生成器远吗...
- **动态SQL生成**:在应用程序启动时,Hibernate会根据配置自动生成SQL语句,而不是通过字节码操作,当更换数据库时,只需更改少量属性即可。 ### 3. Hibernate的使用案例 文档中提供了两个使用Hibernate进行数据...
【标题】:“Hibernate+jsp+Struts2开发的CRUD和分页代码”是指使用Java技术栈中的Hibernate对象关系映射框架、Struts2 MVC框架以及JSP(JavaServer Pages)进行基本的数据操作(创建、读取、更新、删除,简称CRUD)...
Hibernate支持实体类的动态映射,自动处理SQL的生成和执行,同时还提供了丰富的查询API,如HQL(Hibernate Query Language)和Criteria API,使得数据库操作更加便捷。 **4. JDBC14** JDBC(Java Database ...
在任务分配系统中,Hibernate负责将Java对象映射到数据库表,实现数据持久化,降低了数据库操作的复杂性,使得开发者可以专注于业务逻辑,而不是繁琐的SQL语句。 JavaScript(js)是客户端脚本语言,用于增强网页的...
Mybatis允许开发者直接编写SQL语句,避免了传统的基于JDBC的繁琐操作,同时提供了动态SQL的功能,使得数据库查询更为灵活。 【EasyUI】则是一个基于jQuery的UI库,专为开发Web应用程序而设计。EasyUI提供了丰富的...
2. **Hibernate ORM**:Hibernate是一个对象关系映射(ORM)工具,它简化了数据库操作,使得开发者可以使用面向对象的方式处理数据库事务,无需过多关注SQL语句。在购物系统中,Hibernate用于管理商品、订单、用户等...
Hibernate是ORM(Object-Relational Mapping)框架,它消除了Java应用程序与SQL数据库之间的直接交互,将对象模型转换为关系数据库模型。在国家电力项目中,Hibernate可能被用来处理数据持久化,包括实体类的定义、...
JSP用于动态网页生成,Servlet处理HTTP请求,而Hibernate则作为对象关系映射(ORM)工具,简化了数据库操作。SQL语言用于数据库的管理和数据交互,确保数据的准确存储和快速查询。 设计这样的网络教学平台,不仅...
MyBatis是一款流行的持久化框架,它支持自定义SQL语句、存储过程以及高级映射,能够有效地减少JDBC代码的编写,几乎消除了手动设置参数和获取检索结果的需要。MyBatis的配置灵活,可以用XML或者注解来实现,允许...
JPA则是JavaEE提供的对象关系映射工具,用于简化数据库操作,使得开发者无需关注底层SQL语法,而是通过面向对象的方式进行数据操作。JSF是一种用于构建用户界面的MVC(Model-View-Controller)框架,能够帮助快速...
- **Hibernate或MyBatis**:ORM(对象关系映射)框架,简化数据库操作,减少手动编写SQL的繁琐工作。 - **JavaScript和AJAX**:前端交互技术,提升用户体验,如异步加载内容、实时更新等。 4. **用户认证与权限...
- **聊天室或消息系统**:用户可以通过内置的聊天工具与客服人员实时交流,解决购买过程中的疑问。 - **异步通信**:使用Ajax等技术实现无刷新的即时通信,提高交互体验。 8. **安全与认证**: - **HTTPS**:为...