首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • hibernate多表查询 [已结贴,结贴人:zhangwei62766]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zhangwei62766
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 揭贴率:
    发表于:2008-08-21 14:57:30 楼主
    有三个表
    单位信息表
    tbdepart(deptId , deptname )
    单位用户关系表
    tbdeptuser(deptId , userId)
    用户表
    tbuser(userId ,username)

    用hibernate怎么查用户对应的单位名称
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • burningice44
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 15:52:031楼 得分:0
    一般不自己写hql语句,而是用三个表之间的主外键关系
    对应成配置文件,通过他们间的关系得到。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zhangwei62766
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 15:59:102楼 得分:0
    说的太模糊了 能详细点就好了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • yaoddongjava
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 16:35:353楼 得分:0
    对于多表查询的问题 , 需要在配置文件里分别设置这三个表的关系,这就涉及到级联查询的问题
    你自己可以去看看hibernate的一对一 一对多的查询文档,都讲了如何实现多表查询的问题
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • KingRat525
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 16:54:414楼 得分:0
    将用户表、单位信息表,通过多对多双向映射。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zhangwei62766
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 16:59:045楼 得分:0
    在配置文件里面映射好了 我想要个查询的hql语句啊
    谁能帮我写个

    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ansjsun
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 22:14:156楼 得分:0
    一般用内部类的
    就是
    HibernateTemplet().execute(
    new HibernateCallback(Session session){
    Criteria c = session.createCriteria() ;
    c.add()
    .........
    }
    ) ;
    查处了第一个在内部类中查第二个..记得是在内部类中否则就延迟加载了..
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • dragon2k
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 23:11:517楼 得分:10
    试试,我刚学几天:
    tbdepart(deptId , deptname )
    tbdeptuser(deptId , userId)
    tbuser(userId ,username)

    自己配置好多对一(u->d)关系

    SQL code
    SELECT d.deptname from tbuser u join tbdepart d where u.userId = xxx
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wellsweng
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 23:39:578楼 得分:0
    有个偷懒的办法
    <hibernate-mapping>
        <class name="com.entity.Billorder" table="BILLORDER" schema="SCOTT" lazy="false">
    将lazy设成false
    不过会对速度有点小引响
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • kreadk
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 23:57:349楼 得分:10
    有三个表
    单位信息表
    tbdepart(deptId , deptname )
    单位用户关系表
    tbdeptuser(deptId , userId)
    用户表
    tbuser(userId ,username)


    假设她们对应的类分别是:Depart,De_User,User。
    我想可以这样子:
    ...

    De_User deUser=(De_User)session.get(De_User.class,userId);//根据已知的用户ID查询
    Depart depart =(Depart )session.get(Depart.class,deUser.getDeptId());
    String deptname =depart .getDeptName();//部门名字

    ...
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jianpc
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-22 10:06:5510楼 得分:0
    在单位和用户两个实体上分别配置多对多的关系(set)。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jinsu_st
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-22 13:32:4411楼 得分:0
    有三个表
    单位信息表
    tbdepart(deptId , deptname )
    单位用户关系表
    tbdeptuser(deptId , userId)
    用户表
    tbuser(userId ,username)


    表设计的不懂了。 用户应该只属于一个单位吧,单位应该有多个用户,那么单位和用户是1对多关系,这样的话,就很方便很方便了。。。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hhay7758
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-25 20:58:2212楼 得分:0
    通过配置文件
    不过首先要在数据库里设置各个表的关系
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • liuqianqian
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-26 14:00:1113楼 得分:0
    用hibernate的多表关联应该可以吧!
    many-to-many好像是!我也记不清了,很长时间不用了!
    你为什么非要用heibernate来写呢,写sql语句不是一样吗?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ztroma
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-26 17:31:4414楼 得分:0
    这样的多对多关系似乎不合一般的逻辑。按照你的设计,如果要查,查出的也可能是好几个部门。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • chao840805
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-26 20:02:4715楼 得分:0
    多对一即可
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved