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

如何使用hibernate条件实现使用内部联接对象的选择查询

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

如何使用hibernate条件实现使用内部联接对象的选择查询

您的示例只是本机SQL,而不是HQL。无论如何,您可以使用Criteria
API中的以下方法来构造所需的Criteria对象:

  • 使用setProjection(Projection projection)定义select子句
  • 使用createCriteria(String associationPath,String alias)定义内部联接

例如,如果SQL是:

select    TableA.columnA ,TableB.columnB ,TableC.columnCfrom TableA inner join TableB on TableA.tableB_id=TableB.idinner join TableC on TableA.tableC_id=TableC.idwhere TableA.columnAA="AAA"and TableB.columnBB="BBB"and TableC.columnCC="CCC"

那么Criteria对象将是:

List<Object[]>resultList= (List<Object[]>)session.createCriteria(TableA.class, "aliasOfTableA")      .add(Restrictions.eq("aliasOfTableA.columnAA", "AAA"))       .createCriteria("aliasOfTableA.tableBId" , "aliasOfTableB")     .add(Restrictions.eq("aliasOfTableB.columnBB", "BBB"))     .createCriteria("aliasOfTableA.tableCId" , "aliasOfTableC")     .add(Restrictions.eq("aliasOfTableC.columnCC", "CCC"))     .setProjection( Projections.projectionList()  .add( Projections.property("aliasOfTableA.columnA") )  .add( Projections.property("aliasOfTableB.columnB"))  .add( Projections.property("aliasOfTableC.columnC") )     ).list();for (Object[] obj : resultList) {        System.out.println(obj[0]); //print the value from TableA.columnA        System.out.println(obj[1]); //print the value from TableB.columnB        System.out.println(obj[2]); //print the value from TableC.columnC}

请注意,所有参数

Criteria
使用映射的Java实体中的属性名称和类名称。



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

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

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