当前位置: 首页 > 知识库问答 >
问题:

如何将多个MySql联接查询转换为Hibernate查询?

陆昊
2023-03-14

我在Mysql中有一个查询,

StringBuilder str_Resource=new StringBuilder();
str_Resource.append("SELECT * FROM BUS_TRANSPORT.TRIP_CALENDAR JOIN BUS_TRANSPORT.ROUTE_MASTER ON BUS_TRANSPORT.TRIP_CALENDAR.ROUTE_CODE=BUS_TRANSPORT.ROUTE_MASTER.ROUTE_CODE ");
str_Resource.append("JOIN BUS_TRANSPORT.TRIP_RESOURCE_ALLOCATOR ON BUS_TRANSPORT.TRIP_CALENDAR.TRIP_ID=BUS_TRANSPORT.TRIP_RESOURCE_ALLOCATOR.TRIP_ID ");
str_Resource.append("JOIN BUS_TRANSPORT.DRIVER_CALENDAR ON BUS_TRANSPORT.DRIVER_CALENDAR.EMP_ID=BUS_TRANSPORT.TRIP_RESOURCE_ALLOCATOR.EMP_ID AND ");
str_Resource.append("BUS_TRANSPORT.DRIVER_CALENDAR.TRIP_ID=BUS_TRANSPORT.TRIP_RESOURCE_ALLOCATOR.TRIP_ID ");
str_Resource.append("JOIN BUS_TRANSPORT.VEHICLE_CALENDAR ON BUS_TRANSPORT.VEHICLE_CALENDAR.VEHICLE_ID =BUS_TRANSPORT.TRIP_RESOURCE_ALLOCATOR.VEHICLE_ID AND ");
str_Resource.append("BUS_TRANSPORT.VEHICLE_CALENDAR.TRIP_ID =BUS_TRANSPORT.TRIP_RESOURCE_ALLOCATOR.TRIP_ID ");
str_Resource.append("JOIN BUS_TRANSPORT.EMP_MASTER ON BUS_TRANSPORT.EMP_MASTER.EMP_ID=BUS_TRANSPORT.DRIVER_CALENDAR.EMP_ID ");
str_Resource.append("JOIN BUS_TRANSPORT.VEHICLE_MASTER ON BUS_TRANSPORT.VEHICLE_MASTER.VEHICLE_ID=BUS_TRANSPORT.VEHICLE_CALENDAR.VEHICLE_ID ");
str_Resource.append("where BUS_TRANSPORT.TRIP_CALENDAR.trip_from_date_time >= NOW() and BUS_TRANSPORT.TRIP_CALENDAR.trip_from_date_time <= (DATE_ADD(NOW(), INTERVAL 6 DAY)) ");

ResultSet resourceAllRS=stmt.executeQuery(str_Resource.toString());

while (resourceAllRS.next()){
    JSONObject obj=new JSONObject();

    obj.put("rCode", resourceAllRS.getString("ROUTE_CODE"));
    obj.put("rName", resourceAllRS.getString("ROUTE_NAME"));
    obj.put("source", resourceAllRS.getString("source"));
    obj.put("destination", resourceAllRS.getString("destination"));
    obj.put("tripStartDate", CommonFunctions.dateConvert(resourceAllRS.getString("TRIP_FROM_DATE_TIME").toString()) );
    obj.put("tripstartTime", CommonFunctions.timeConvert(resourceAllRS.getString("TRIP_FROM_DATE_TIME").toString()));
    obj.put("tripEndDate", CommonFunctions.dateConvert(resourceAllRS.getString("TRIP_TO_DATE_TIME").toString()));
    obj.put("tripEndTime", CommonFunctions.timeConvert(resourceAllRS.getString("TRIP_TO_DATE_TIME").toString()));
    obj.put("driverId", resourceAllRS.getString("EMP_ID"));
    obj.put("driverName", resourceAllRS.getString("EMP_NAME"));
    obj.put("vehId", resourceAllRS.getString("VEHICLE_ID"));
    obj.put("vehicleType", resourceAllRS.getString("BUS_TYPE"));
    obj.put("tripId", resourceAllRS.getString("TRIP_ID"));

    array.put(obj);
    System.out.println("obj is "+obj);
}

我已经完成了简单的查询转换为hibernate查询。我将所有pojo类绑定到表。请指导我如何将多个连接查询转换为一个hibernate查询。

共有1个答案

姚星河
2023-03-14

您不需要在hibernate中进行连接查询,而是可以通过编程方式处理这个问题,因为您有用于表的pojo类。

 类似资料:
  • 我使用了cakephp Mysql到mongodb查询组件,即将Mysql查询转换到mongodb中,但是当查询有多个括号时代码停止工作,我还尝试将http://www.querymongo.com/site上的查询转换为相同的问题,

  • 问题内容: 我想从数据库中删除某些项目。我有以下查询: 这有效,并返回2个结果。 现在,我想将此查询转换为查询。但是,以下操作无效: MySQL引发以下错误: 1064-您的SQL语法有误;检查与您的MySQL服务器版本相对应的手册以获取正确的语法,以在第1行的“ WHERE entry.sheetID = sheets.id ANDsheets.clientID = 13”附近使用 我在这里做错

  • 问题内容: 我有以下查询: 所以我正在使用并抓住。所以现在,我要获取该image_id并将其从图像表中转换成。 如何将其添加到查询中? 问题答案: 您可以简单地添加另一个联接,如下所示: 但是请注意,由于它是一个,如果您的消息中没有图像,则将跳过整个行。如果可能的话,您可能需要执行一次操作,该操作将仅在存在一个仪表板消息的情况下返回所有仪表板消息和一个image_filename(否则,您将获得n

  • 问题内容: 在我的MySQL模式中,我有表 在MSSQL中,我进行了CTE查询(从下至上为提供的类别ID构建类别树: 如何将该查询“转换”为MySQL? 问题答案: 不幸的是,MySQL不支持CTE(公用表表达式)。IMO早就该这样做了。通常,您可以只使用子查询来代替,但是这种特定的CTE是 递归的 :它在查询中引用自身。递归CTE对于分层数据非常有用,但同样:MySql根本不支持它们。您必须实现

  • 问题内容: 这是我的问题,我正在选择并执行多个联接以获取正确的项目…它吸引了相当多的行,超过100,000。当日期范围设置为1年时,此查询将花费5分钟以上的时间。 我不知道是否可能,但恐怕用户会将日期范围扩展到10年左右并使其崩溃。 有人知道我可以如何加快速度吗?这是查询。 我不是MySQL方面的佼佼者,因此不胜感激! 提前致谢! 更新 这是您要求的解释 我还为table5行和table4行添加了

  • 任何帮助都将不胜感激!