hql 多对一查询语句如何写

  • public A { private long id; private String a; private B b; } public B{ private long id; private String b; } 现在我知道了B类的id和A类的变量a,要查出整个A类,hql语句怎么写啊,在线急等,求大神指点

是B类的所有ID吗?
我想到的是遍历,bs代表B类的所有实例对象,
String hql="from A a where a.b.id =?";
for(B b :bs){
List as= session..createQuery(hql).setParameter(0,b.getId());.list();
}
每次返回一个list,然后合并,去掉相同部分。
下面是网上找的方法
public static void ArrayListSort(ArrayList list1,ArrayList list2){
//(Array)List.removeAll/addAll/retainAll
printlnList(list1,"org list1");
printlnList(list2,"org list2");
ArrayList newList=new ArrayList ();
ArrayList newList2=new ArrayList ();
ArrayList newList3=new ArrayList ();
newList2.addAll(list1);
newList3.addAll(list2);
newList2.removeAll(newList3);
newList.addAll(newList2);
newList.addAll(newList3);
printlnList(newList,"newList");

}
我也不知道行不行

直接使用子查询应该也可以吧
String hql="from A a where a.b.id in(select id from B)"

如果你不能直接查询B的话,可以写成
String hql="from A a where a.b.id in :list";
List list=new ArrayList();

list.add(B类的ID);
query.setParameterList(“list”,list);