地震坚持学习,很迷惑的一个问题hibernate问题,跪求答案

www119112555 2008-05-28 02:33:11
紧急求助

很迷惑的一个问题,

在hibernate中例如

表A
aid int primary key,
aname varchar(20),
bid int,
foreign key (bid) references b (id)

表B
bid int primary key,
bname varchar(20)


假如我现在有一个A对象,我怎样通过外键bid,获得bname(如果直接用SQL语句,是把两表连接起来),在hibernate中不知道怎么办
...全文
171 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
ADMIN1359984276 2008-05-30
  • 打赏
  • 举报
回复
你sql 里面建好关系了, hibernate 框架 就自动建立 关系了 这个问题很容易解决的
wsh622827 2008-05-29
  • 打赏
  • 举报
回复
1楼正解
再问5楼发的什么东西?
jofy1004 2008-05-29
  • 打赏
  • 举报
回复
up
hardtoregistration 2008-05-29
  • 打赏
  • 举报
回复
----------------------------------
Quietly through ...
zcqzcq 2008-05-29
  • 打赏
  • 举报
回复
建议你看看书。
jia19861029 2008-05-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 caoyinghui1986 的回复:]
如果你的表B 和 表A 建立了 一 对多的 双向关联 可以用
一种方法:a.getB() 获得b对象 然后去取b里面的 bname属性.(a为你的A对象)


另一种方法: 你既然知道 bid 你的 B表中 bid又是主键 直接 hql ="select b.bname from B b where b.bid=?"


参考一条hibernate中的内连接查询语句(与解答本题无关)
hql ="from A a,B b where a.bid = b.bid ";
如果你的B实体类中有一个关联到 A 的集合属性 aXXX
也可以用
h…
[/Quote]
xjcheng 2008-05-29
  • 打赏
  • 举报
回复
如果刚开始学习,最好是在hibernat中做一对多的关系处理后,在实例里写好方法即可
qq278095755 2008-05-29
  • 打赏
  • 举报
回复
1楼介绍的很全面,希望楼主多关注下hibernate里的映射关系
水瘦山寒 2008-05-28
  • 打赏
  • 举报
回复
select b.bname from Btable b where b.atable.aid=?

注意在A表的映射配置文件中(Atable.hbm.xml)中
<many-to-one name="btable"
class="...Btable">
<column name="bid" length="40" lazy="false"/>
</many-to-one>
水瘦山寒 2008-05-28
  • 打赏
  • 举报
回复
[Quote=引用楼主 www119112555 的帖子:]
紧急求助

很迷惑的一个问题,

在hibernate中例如

表A
aid int primary key,
aname varchar(20),
bid int,
foreign key (bid) references b (id)

表B
bid int primary key,
bname varchar(20)


假如我现在有一个A对象,我怎样通过外键bid,获得bname(如果直接用SQL语句,是把两表连接起来),在hibernate中不知道怎么办
[/Quote]
假设A、B表对应实体类叫Atable、Btable
select b.bname from Btable where atable
cw550284 2008-05-28
  • 打赏
  • 举报
回复
建立表之间的关系啊!!
whetu 2008-05-28
  • 打赏
  • 举报
回复
1楼正解,也许搂主需要更详细的答案或者例子。
zhj92lxs 2008-05-28
  • 打赏
  • 举报
回复
1楼正解
yibunengjing 2008-05-28
  • 打赏
  • 举报
回复
我是进来顶LZ的标题的,另1楼的兄弟说的不错
longtramp 2008-05-28
  • 打赏
  • 举报
回复

指示hibernate如何加载其引用对象,默认情况下会根据主键匹配进行加载Person
因为外键关联映射中,两个实体的关系是由表A的外键维护的,
所以 直接使用a.getBid()就是取得了b表中的一个对象
就可以使用表b中对象所定义的方法
如a.getBid().get/setBname()
nisersent 2008-05-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 caoyinghui1986 的回复:]
如果你的表B 和 表A 建立了 一 对多的 双向关联 可以用
一种方法:a.getB() 获得b对象 然后去取b里面的 bname属性.(a为你的A对象)


另一种方法: 你既然知道 bid 你的 B表中 bid又是主键 直接 hql ="select b.bname from B b where b.bid=?"


参考一条hibernate中的内连接查询语句(与解答本题无关)
hql ="from A a,B b where a.bid = b.bid ";
如果你的B实体类中有一个关联到 A 的集合属性 aXXX
也可以用
h…
[/Quote]
jessicway 2008-05-28
  • 打赏
  • 举报
回复
1 楼很正确啊
nanjg 2008-05-28
  • 打赏
  • 举报
回复
建议系统学下 联合查询 相关知识点
M_song 2008-05-28
  • 打赏
  • 举报
回复
楼上正解!
建议一对多的关联,或者直接用hql查询!
Shine_Panda 2008-05-28
  • 打赏
  • 举报
回复
如果你的表B 和 表A 建立了 一 对多的 双向关联 可以用
一种方法:a.getB() 获得b对象 然后去取b里面的 bname属性.(a为你的A对象)


另一种方法: 你既然知道 bid 你的 B表中 bid又是主键 直接 hql ="select b.bname from B b where b.bid=?"


参考一条hibernate中的内连接查询语句(与解答本题无关)
hql ="from A a,B b where a.bid = b.bid ";
如果你的B实体类中有一个关联到 A 的集合属性 aXXX
也可以用
hql="from B a inner join aXXX";




67,537

社区成员

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

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