studio programacion pasar objetos móviles leer entre desde desarrollo curso celdas aplicaciones actividades java jpa java-8 eclipselink java-stream

java - programacion - ¿Por qué esta secuencia no devuelve ningún elemento?



manual de programacion android pdf (1)

Parece que estás usando EclipseLink antes de la versión 2.6 y presionas el Bug # 433075 . Este campo de devices se reemplaza con IndirectList (a través de la reflexión), que amplía la clase Vector y realiza una inicialización lenta. Fue escrito para una versión anterior de Java que no tenía el método stream() , por lo que la stream() se llama realmente en la lista no inicializada y devuelve una secuencia vacía.

El error está solucionado , por lo que probablemente tengas que actualizar EclipseLink a la versión 2.6. En EclipseLink 2.6, se usa otra clase cuando se ejecuta en JDK 1.8, que es compatible con la transmisión.

Traté de escribir el siguiente código como una secuencia:

AbstractDevice myDevice = null; for (AbstractDevice device : session.getWorkplace().getDevices()) { if (device.getPluginconfig().getPluginType().getId() == 1) { myDevice = device; } }

este código funciona bien

Pero cuando lo reescribo de esta manera ya no funciona:

myDevice = session.getWorkplace().getDevices().stream() .filter(s -> s.getPluginconfig().getPluginType().getId() == 1) .findFirst().get();

El Optional que obtengo de la transmisión no tiene valores. ¿Por qué?

EDITAR

Cuando pruebo esto (todavía recibo dos dispositivos de getDevices() ):

List<AbstractDevice> testList = session.getWorkplace().getDevices() .stream().collect(Collectors.toList());

el testList está vacío. ¿Entonces parece que algo va mal con la transmisión de mi List de dispositivos?

Es una aplicación JavaEE y obtengo mis dispositivos de la entidad correspondiente:

@ManyToMany(cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH}) @JoinTable(name = "Workplace_AbstractDevice", joinColumns = { @JoinColumn(name = "Workplace", referencedColumnName = "ID") }, inverseJoinColumns = { @JoinColumn(name = "AbstractDevice", referencedColumnName = "ID") }) @OrderColumn private List<AbstractDevice> devices = new ArrayList<AbstractDevice>(); public List<AbstractDevice> getDevices() { return devices; }