Hibernate 查询语句  join on 不支持 ,用什么方式解决?

handanyiying 2008-10-27 03:32:01
select device.deviceId,device.deviceName,manu.manufacName, com.companyName 
from  DeviceCardRel as device  inner join  
  Company as com on  device.useDepId=com.id
left join Manufacturers as manu on  manu.id=device.madeDep

order by device.id desc


ERROR hql.PARSER:35 - *** ERROR: line 1:278: unexpected token: on
2008-10-27 03:25:43: ERROR hql.PARSER:35 - *** ERROR: line 1:336: unexpected token: on
org.hibernate.hql.ast.QuerySyntaxError: unexpected token: on near line 1, column 278

貌似hibernate不支持  join on语句.因为我这条语句从 查询分析器可以 正常查询,各位老师,帮忙解决一下哦~~无以为报,分数答谢,当日结帐~~在线等待
...全文
1392 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangzhennan 2010-07-19
  • 打赏
  • 举报
回复
我顶学习了
handanyiying 2008-10-27
  • 打赏
  • 举报
回复
说话比我还冲~~~一看就是程序员~~嘿嘿~~
sunyujia 2008-10-27
  • 打赏
  • 举报
回复
你的pojo都已经有关系,hibernate都知道他们的关系了,你还告诉他on干嘛呢???
它不需要知道了
使用on关键字是在没有关系的时候,告诉它关系,

就当我没用过好了,如果你不确认我提供的方法是正确的不要批评我的看法,谢谢。
我不懈于你的100分。
handanyiying 2008-10-27
  • 打赏
  • 举报
回复
也许是我太菜了~用了这么就hibernate第一次听说你的方式~~~o(∩_∩)o...还是询问我自己的朋友圈吧

关键在于 left join on的配置方面,如果你没有用过,别胡乱批评别人的做法
sunyujia 2008-10-27
  • 打赏
  • 举报
回复
"from DeviceCardRel deviceCardRel where deviceCardRel.Manufacturers=1"
就可以了
Manufacturers你的字段名字怎么大写啊
用hibernate要注意大小写

上面查询你难道的是DeviceCardRel对象,你要取Manufacturers的值,应该getManufacturers这样来取
这才是hibernate 的用法

handanyiying 2008-10-27
  • 打赏
  • 举报
回复
<!--Manufacturers-->

<list name="comid" inverse="true">
<key column="useDepId"/>
<index column="useDepId" type="Integer" />
<one-to-many class="DeviceCardRel"/>
</list>


<!-- DeviceCardRel -->

<many-to-one name="Manufacturers" column="id" not-null="false"/>


sunyujia 2008-10-27
  • 打赏
  • 举报
回复
貌似你在用面向关系的思想在用hibernate
你的对象之间好像都没有建立关系,如果这么用的话,还不如用ibatis好呢
完全不正确的使用hibernate方式
sunyujia 2008-10-27
  • 打赏
  • 举报
回复
select device.deviceId,device.deviceName,manu.manufacName, com.companyName 
from  DeviceCardRel as device  join  
  device.useDepId as com
left join device.madeDep as manu order by device.id desc


多对一等详细的关系还是没说明啊。。。。。

如果有关系不用on关键字
lihan6415151528 2008-10-27
  • 打赏
  • 举报
回复
是在不行的话

你就用
session.createSQLQuery();

里面写上你在查询分析器里面语句吧!

handanyiying 2008-10-27
  • 打赏
  • 举报
回复
DeviceCardRel 设备表
Company 单位表
Manufacturers 生产厂商表



设备 表中的 useDepId 就是 存放使用单位的 Id 关联 Company

设备 表中的 madeDep 就是 存放生产厂商的 Id 关联 Manufacturers


sunyujia 2008-10-27
  • 打赏
  • 举报
回复
DeviceCardRel
Company
Manufacturers
3者之间什么关系?还是跟本完全没关系。
handanyiying 2008-10-27
  • 打赏
  • 举报
回复
查询分析器里面的语句 和我 写的上面那个一样:一个字也没有修改 都一样的~~

lihan6415151528 2008-10-27
  • 打赏
  • 举报
回复
还有把你在查询分析器里面的语句也贴出来

表结构能贴出来最好
lihan6415151528 2008-10-27
  • 打赏
  • 举报
回复
在hqlEditor里面测试过没?

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧