a: id,name
b: id,name
c: a.id,b.id
怎么在a里面获取b.name
select new a(a.id,b.name) from a,b,c where a.id = c.aid and c.bid = b.id
a.c.b.name
class a里面聚合c
class c里面聚合ab,其中b有id name属性
在a的实体类里边 加一个属性 这个属性会关联到b的ID 那么 b的一切 a就都可以知道了
select * from a
inner join c
on
a.id = c.a
inner join b
on
b.id = c.b
where b.id = *
from a,b,c where a.id=c.AID and b.id=c.BID可以把3个类都查出来,然后转换
A 到C表查询B ID,然后,在查到B name
我之前研究过这个问题
a和b的关系就是多对多
c就是一个中间关系表
当时试了用hiberante的注解去表达a和b是many to many
也试了用语句去表达many to many
不过到最后得除一个结论,如果想优雅的通过hibernate实体类去表达多对多会抛出性能警告
注意是警告,不是异常,具体的不太记得了,不过警告的意思是,hibernate无法使用数据库的分页
所以hibernate的分页是在内存中分的,也就是hibernate先把所有的数据都拿出来,然后在分页
我当时就研究到这,最后得除一个结论,想用hibernate得实体类表达出复杂的关系,是不可行的
后来我用hibernate就是写HQL~~~~
配置双向多对多关系即可
看你的问题应该是hibernate多对多的问题,建议你用fetch抓取
form C as c fetch c.a fetch c.b 这引通过C类为桥,就能同时得到 a.id 与 b.name