开发者社区> 问答> 正文

原生SQL语句的联表查询问题?报错

@Koala_考拉 你好,想跟你请教个问题:

关于联表查询,遇到困扰

很简单的语句:查询条件一样

1能正确执行,2报错org.hibernate.MappingException: No Dialect mapping for JDBC type: -9

需要像2这样返回分别两个表的字段,请问该如何写这个SQL语句

1:  select a.sex            from XXX a left  join ZZZZ b on   a.id_dept=b.id  where 1 = 1

2:  select a.sex,b.name from XXX a left  join ZZZZ b on   a.id_dept=b.id  where 1 = 1

展开
收起
爱吃鱼的程序员 2020-06-14 22:39:15 619 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    使用了koala提供的 createSqlQuery方法
    Page<Usertest>pages=getQueryChannelService()
    . createSqlQuery(sql.toString()).setParameters(conditionVals)
    .setPage(currentPage,pageSize).pagedList();

    这个例子是没问题的

    List<Object[]>obj=getQueryChannelService().createSqlQuery("SELECTksl.ID,ks.`NAME`fromks_resource_lineassignmentkslLEFTJOINks_resourceksONksl.CHILD_ID=ks.IDwhere1=1").list();

    System.out.println(obj.size()+"===========");
    for(Object[]each:obj){
    System.out.println(each[0]+"====");
    System.out.println(each[1]+"====");
    }

    引用来自“Koala_考拉”的评论

    这个例子是没问题的

    List<Object[]>obj=getQueryChannelService().createSqlQuery("SELECTksl.ID,ks.`NAME`fromks_resource_lineassignmentkslLEFTJOINks_resourceksONksl.CHILD_ID=ks.IDwhere1=1").list();

    System.out.println(obj.size()+"===========");
    for(Object[]each:obj){
    System.out.println(each[0]+"====");
    System.out.println(each[1]+"====");
    }

    hibernateHQL不认得  left join 之类的关键字,无法解析。。改成

    selecta.sex,b.namefromXXXa,ZZZZbwherea.id_dept=b.id虽然知道你用左连接。用其他语句实现把.

    引用来自“hlevel”的评论

    hibernateHQL不认得  left join 之类的关键字,无法解析。。改成

    selecta.sex,b.namefromXXXa,ZZZZbwherea.id_dept=b.id虽然知道你用左连接。用其他语句实现把.
    2020-06-14 22:39:32
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
SQL Server在电子商务中的应用与实践 立即下载
GeoMesa on Spark SQL 立即下载
原生SQL on Hadoop引擎- Apache HAWQ 2.x最新技术解密malili 立即下载