java - 如何将多个 MySql 连接查询转换为 Hibernate 查询?

标签 java mysql sql hibernate

我在 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 类绑定(bind)到表。请指导我如何将多个连接查询转换为一个 hibernate 查询。

最佳答案

无需在 hibernate 状态下进行连接查询,您可以通过编程方式处理此问题,因为您拥有表的 pojo 类。

关于java - 如何将多个 MySql 连接查询转换为 Hibernate 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20945019/

相关文章:

java - 如何使用蓝牙在应用程序内发送 .apk 文件

java - 可变长度数组的矩阵的组合

mysql - 从并非所有选项都有投票的调查表中选择并计算票数

mysql - 在SQL中找到一个变量的最小值和其他变量的匹配值

c++ - 如何在qt中修复 "No query Unable to fetch row"

java - 动态方法分派(dispatch)只是为了减少编译时间吗

java - java程序中的命令提示符

php - 大表上的 Mysql 性能问题

mysql - 清除 MySQL 中的 Umbraco 历史记录

sql - 在 Redshift 中执行 WHERE IN 或 INNER JOIN 更快吗