Por que esse fluxo não retorna nenhum elemento?

Tentei escrever o seguinte código como um fluxo:

AbstractDevice myDevice = null;

for (AbstractDevice device : session.getWorkplace().getDevices()) {

    if (device.getPluginconfig().getPluginType().getId() == 1) {
        myDevice =  device;
    }

}

esse código funciona bem.

Mas quando eu o reescrevo assim, não funciona mais:

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

oOptional que eu volto do fluxo não tem valores nele. Por quê?

EDITAR

Quando tento isso (ainda recebo dois dispositivos degetDevices()):

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

atestList está vazia. Parece que algo dá errado com o fluxo do meuList de dispositivos?

É um aplicativo JavaEE e recebo meus dispositivos da entidade correspondente:

@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;
}

questionAnswers(1)

yourAnswerToTheQuestion