ho questa entità e voglio elencare per ogni dispositivo l'ultimo evento con il messaggio property = 1Selezionare la riga con la maggior parte della data recente per utente con 1 condizione in APP
@Entity
@Table(name = "t_device_event")
@NamedQueries(value = {
@NamedQuery(name = "DeviceEvent.findWithMessageActive",
query = "from DeviceEvent as de1 where de1.message = 1 and de1.received = "
+ " (select max(de2.received) from DeviceEvent de2 "
+ " where de2.device.id = de1.device.id) "),)
public class DeviceEvent {
..
}
Ma ho un problema di asserzione nell'ultimo test , perché considera device3
come ultimo evento e non è il caso.
assertTrue ((numDevicesWithActiveMessage+1) == deviceEventService.findWithActiveMessage().size());
DeviceEvent deviceEvent3 = newDeviceEvent();
deviceEvent3.setMessage(1);
deviceEventService.save(deviceEvent3);
DeviceEvent deviceEvent4 = newDeviceEvent();
deviceEventService.save(deviceEvent4);
assertTrue ((numDevicesWithActiveMessage+1) == deviceEventService.findWithActiveMessage().size());
Potete fornire le vostre annotazioni su 'DeviceEvent.findWithMessageActive()', spiegazione di dove avete impostato 'received' e risultato atteso? –
Penso che dovresti aver aggiunto deviceEvent4.setMessage (1); poiché questo codice assertTrue ((numDevicesWithActiveMessage + 1) == deviceEventService.findWithActiveMessage(). size()); stava cercando un messaggio attivo ma device4 non ne ha. Quindi, l'ultimo è device3. questo può aiutarti. – bipartite