问题描述
- 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语句怎么写啊,在线急等,求大神指点
- public A {
解决方案
hibernate查询语句--HQL
hibernate查询语句--HQL
hibernate查询语句--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);