### Question:
JpaDeviceDao extends JpaAbstractSearchTextDao<DeviceEntity, Device> implements DeviceDao { @Override public ListenableFuture<List<Device>> findDevicesByTenantIdCustomerIdAndIdsAsync(UUID tenantId, UUID customerId, List<UUID> deviceIds) { return service.submit(() -> DaoUtil.convertDataList( deviceRepository.findDevicesByTenantIdAndCustomerIdAndIdIn(fromTimeUUID(tenantId), fromTimeUUID(customerId), fromTimeUUIDs(deviceIds)))); }  @Override List<Device> findDevicesByTenantId(UUID tenantId, TextPageLink pageLink); @Override ListenableFuture<List<Device>> findDevicesByTenantIdAndIdsAsync(UUID tenantId, List<UUID> deviceIds); @Override List<Device> findDevicesByTenantIdAndCustomerId(UUID tenantId, UUID customerId, TextPageLink pageLink); @Override ListenableFuture<List<Device>> findDevicesByTenantIdCustomerIdAndIdsAsync(UUID tenantId, UUID customerId, List<UUID> deviceIds); @Override Optional<Device> findDeviceByTenantIdAndName(UUID tenantId, String name); @Override List<Device> findDevicesByTenantIdAndType(UUID tenantId, String type, TextPageLink pageLink); @Override List<Device> findDevicesByTenantIdAndCustomerIdAndType(UUID tenantId, UUID customerId, String type, TextPageLink pageLink); @Override ListenableFuture<List<EntitySubtype>> findTenantDeviceTypesAsync(UUID tenantId);  }### Answer:
@Test public void testFindDevicesByTenantIdAndCustomerIdAndIdsAsync() throws ExecutionException, InterruptedException { UUID tenantId1 = UUIDs.timeBased(); UUID customerId1 = UUIDs.timeBased(); UUID tenantId2 = UUIDs.timeBased(); UUID customerId2 = UUIDs.timeBased(); List<UUID> deviceIds = new ArrayList<>(); for(int i = 0; i < 20; i++) { UUID deviceId1 = UUIDs.timeBased(); UUID deviceId2 = UUIDs.timeBased(); deviceDao.save(new TenantId(tenantId1), getDevice(tenantId1, customerId1, deviceId1)); deviceDao.save(new TenantId(tenantId2), getDevice(tenantId2, customerId2, deviceId2)); deviceIds.add(deviceId1); deviceIds.add(deviceId2); } ListenableFuture<List<Device>> devicesFuture = deviceDao.findDevicesByTenantIdCustomerIdAndIdsAsync(tenantId1, customerId1, deviceIds); List<Device> devices = devicesFuture.get(); assertEquals(20, devices.size()); }