紧急求助很迷惑的一个问题,在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中不知道怎么办
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中不知道怎么办
一种方法: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";
建议一对多的关联,或者直接用hql查询!
select b.bname from Btable where atable
<many-to-one name="btable"
class="...Btable">
<column name="bid" length="40" lazy="false"/>
</many-to-one>
指示hibernate如何加载其引用对象,默认情况下会根据主键匹配进行加载Person
因为外键关联映射中,两个实体的关系是由表A的外键维护的,
所以 直接使用a.getBid()就是取得了b表中的一个对象
就可以使用表b中对象所定义的方法
如a.getBid().get/setBname()
Quietly through ...