栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用hibernate条件查询ManyToMany关系

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用hibernate条件查询ManyToMany关系

这是我最终使用HQL实现它的方式:

public List<DriversLicence> findDriversLicencesWith(List<LicenceClass> licenceClasses) {    String hqlString = "select dl from DriversLicenceImpl dl where 1=1 ";    for (int i = 0; i < licenceClasses.size(); i++) {        hqlString += " and :licenceClass" + i + " = some elements(dl.licenceClasses)";    }    Query query = getSession().createQuery(hqlString);    for (int i = 0; i < licenceClasses.size(); i++) {        query.setParameter("licenceClass" + i, licenceClasses.get(i));    }    return query.list();}

或通过sqlRestriction使用Hibernate Criteria:

for (LicenceClass licenceClass : licenceClasses) {        criteria.add(Restrictions.sqlRestriction("? = some(select " + LicenceClass.PRIMARY_KEY + " from " +         LICENCE_CLASS_JOIN_TABLE + "  where {alias}." +         DriversLicence.PRIMARY_KEY + " = " + DriversLicence.PRIMARY_KEY + ")",         licenceClass.getId(), Hibernate.LONG));}

LICENCE_CLASS_JOIN_TABLE是hibernate生成的表的名称,该表支持driverLicence和LicenceClass之间的多对多关系。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/435861.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号