- 浏览: 107951 次
- 性别:
最新评论
-
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 4056正常情况下是 addOrder(Order.desc(&quo ... -
疑问:Spring配置Quartz例子出错,请看下.谢谢
2006-12-13 14:35 23845研究了一天,在官方论坛也查询了很多,就是锁定不了原因。请各位朋 ... -
配置Spring 支持 Web session,request
2006-12-11 23:13 7207费了1天劲,终于琢磨出来了。。。。 配置Spring使得支持S ... -
Hibernate 要点
2006-11-24 08:32 1631Hibernate 如果采用 ThreadLocal ... -
pager-taglib 的使用
2006-11-22 23:36 4422Pager-taglib 2.0 是一套分页标签库,可以灵 ... -
Confluence 无限制使用
2006-11-22 21:36 123一直很喜欢使用Confluence,可是它是商业软件,要收钱的 ... -
[转]UrlRewrite Filter
2006-11-22 21:17 1626一:首先在到官方站点下载最新的jar文件 http://tuc ... -
[转]Tomcat 5.0.28 连接池配置
2006-11-22 09:58 2945其实Tomcat的连接池配置并不是很难,但也花费了我一些时间。 ... -
[转]Tomcat类加载机制
2006-11-22 08:58 1996TOMCAT源码分析(启动框架 ... -
Log4j应用
2006-11-23 11:20 24661.Log4j初始化: 最简单的配置方式:将配置文件取名log ... -
JasperReport
2006-11-19 20:02 101在进行HTML,Excel, RTF格式,或者干脆直接打印到打 ... -
PTViewer 全景显示
2006-11-19 00:03 3257全景显示 http://www.fsoft.it/panora ... -
XStream使用学习
2006-11-18 17:46 6639java 代码 import java.io. ... -
全景展示 - ptviewer.jar
2006-11-17 00:04 83全景英文名为Panorama,又叫虚拟全景、全景虚拟现实等, ... -
开发和使用JSP自定义标签过程
2006-11-16 23:56 1779开发和使用JSP自定义标签过程: 1.开发标签实现类. H ... -
log4j的配置方法
2006-11-16 23:35 88平时都是使用了一个专门的servlet来初始化log4j,刚看 ... -
使用xStream进行java object<-->xml之间的转换
2006-11-16 23:28 18905官方网站:http://xstream.codehaus.or ...
相关推荐
hibernate实现动态SQL查询,通过XML配置SQL,FREEMARKER 解析,生成要执行的SQL
反射对象生成sql,保存对象。 里面还差,存储过程、批量操作、动态sql 还差一个配套的工具(根据数据库字段生成对象)
使用本地sql语句查询后,无需再使用Object对查询结果进行强制转换,而是直接将查询结果放到实体Bean里了。 PS: 其实只有一版,这里只所以叫最终版是因为该附件我上传了好几天传不上去,到最后报告说‘资源已经存在...
Hibernate 函数 ,子查询 和原生SQL查询。Hibernate 函数 ,子查询 和原生SQL查询
hibernate将本地SQL查询结果封装成对象。如进行复杂的统计等本地sql语句查询后,直接放到对象里了,而不会再使用Object进行强转
hibernate将本地SQL查询结果封装成对象(最终).zip
Hibernate+本地SQL查询SQLQuery宣贯.pdf
Hibernate SQLQuery 查询Oracle char类型结果为一个字符解决方法 Hibernate SQLQuery 查询Oracle char类型结果为一个字符解决方法 Hibernate SQLQuery 查询Oracle char类型结果为一个字符解决方法 Hibernate SQL...
hibernate代码自动生成
Hibernate中的查询:HQL、Criteria、原生SQl的Demo,希望可以帮助大家理解Hibernate查询。
Hibernate对象的生命周期 Hibernate对象的生命周期 Hibernate对象的生命周期
使用Hibernate编写通用数据库操作代码
hibernate 对象关系映射总结hibernate 对象关系映射总结hibernate 对象关系映射总结
hibernate执行原生sql语句
hibernate自动生成entity,映射文件,dao.等
NULL 博文链接:https://javatozhang.iteye.com/blog/2045875
关于Hibernate的各种主键生成策略与配置详解
该方式是原生SQL查询的一种方式,需要个人自己书写SQL语句进行操作,用法比较灵活多变,适合比较复杂的SQL查询.该压缩包是本人对该查询方式的一种总结练习
hibernate dao 生成工具