代码之家  ›  专栏  ›  技术社区  ›  SpringUser

带Querydsl的弹簧:java.lang.ClassCastException类

  •  0
  • SpringUser  · 技术社区  · 7 年前

    我需要nBuildId来查找building表中的building name。那么我如何迭代这个呢 List<Tuple>

    我试过了

     public  List<Tuple> loadUnclamiedRoomGrid(Integer nBuildId, String sFloor) {
    
            QRoom room = QRoom.room;        
            QRoomDepartmentMapping roomDepartmentMapping = QRoomDepartmentMapping.roomDepartmentMapping;
    
            JPAQuery<Tuple> query = new JPAQuery<Tuple>(em);
    
            query
                 .from(room) 
                 .where(room.nRoomId.notIn
                             (JPAExpressions.select(roomDepartmentMapping.nRoomId)
                                   .from(roomDepartmentMapping)
                             )
                   );
    
            if (nBuildId != null && nBuildId !=0) {
                query.where(room.nBuildId.eq(nBuildId));
            }
    
            if(sFloor != null) {
                query.where(room.sFloor.eq(sFloor));
            }   
    
            List<Tuple> queryResult = query.fetch();
    
            for(Tuple row : queryResult) {
    
                System.out.println("Build Id " +row.get(room.nBuildId));
            }
    
        return queryResult; 
    
        }
    

    message: "com.spacestudy.model.Room cannot be cast to com.querydsl.core.Tuple",
    Exception: "java.lang.ClassCastException" 
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   Robert Bain    7 年前
     public  List<Room> loadUnclamiedRoomGrid(Integer nBuildId, String sFloor) {
    
            QRoom room = QRoom.room;        
            QRoomDepartmentMapping roomDepartmentMapping = QRoomDepartmentMapping.roomDepartmentMapping;
    
            JPAQuery<Room> query = new JPAQuery<Room>(em);
    
            query
                 .from(room) 
                 .where(room.nRoomId.notIn
                             (JPAExpressions.select(roomDepartmentMapping.nRoomId)
                                   .from(roomDepartmentMapping)
                             )
                   );
    
            if (nBuildId != null && nBuildId !=0) {
                query.where(room.nBuildId.eq(nBuildId));
            }
    
            if(sFloor != null) {
                query.where(room.sFloor.eq(sFloor));
            }   
    
            List<Room> queryResult = query.fetch();
    
            for(Room row : queryResult) {
    
                System.out.println("Build Id " + room.nBuildId);
            }
    
        return queryResult; 
    
        }