public List<DeviceList> getAllDevices() {
    SessionFactory sessionFactory = HibernateSessionFactory.getSessionFactory();
    List<DeviceList> results = new ArrayList<DeviceList>();
    Session session = sessionFactory.openSession();
    if (session != null) {
      Query query = session.createQuery("from DeviceAvailability");

      List<DeviceAvailability> resultList = query.list();
      if (resultList != null && resultList.size() > 0) {
        System.out.println("results size is " + resultList.size());

        DeviceList row = new DeviceList();
        for (DeviceAvailability resultObject : resultList) {
          System.out.println(resultObject.getClass());

          Device device = (Device) resultObject.getDevice();

          row.setBarCodeIdentifier(device.getBarCodeId());
          row.setDeviceCapacity(device.getDeviceCapacity());
          row.setDeviceName(device.getDeviceName());
          row.setDeviceNickname(device.getDeviceNickName());
          row.setDeviceOs(device.getDeviceOs());
          row.setDeviceOsVersion(device.getDeviceOsVersion());
          row.setDeviceSerialNumber(device.getDeviceSerialNumber());
          row.setDeviceStatus(device.getDeviceStatus());
          row.setDeviceType(device.getDeviceType());
          row.setId(device.getId());
          row.setOwnedBy(device.getDeviceOwner());

          DeviceAvailability availability = (DeviceAvailability) resultObject;
          row.setCheckedOutAt(availability.getModifiedDate().toString());
          row.setIsCheckedOut(availability.isIsCheckedOut());

          DeviceUser deviceUser = availability.getDeviceUser();
          if (deviceUser != null) {
            row.setCurrentlyCheckedOutById(deviceUser.getEmailId());
            row.setLocation(deviceUser.getUserLocation());
          }
          results.add(row);
        }
      }
    }
    return results;
  }