Я думаю, вы перезаписываете переменную allWinner
в каждой итерации branchId
. Последний найденный, вероятно, не имеет победителей, поэтому null
.
Я думаю, что лучшим подходом будет использование нативного запроса, поскольку у вас уже есть схема для ваших состояний. Посмотрите пример ниже, вы могли бы очень хорошо использовать оператор соединения.
String nativeQuery = "SELECT * FROM HOUSE_DETAIL";
try {
List<PersistentHouse> resultList = new ArrayList<>();
ResultSet rs = getServiceHub().jdbcSession().prepareStatement(nativeQuery).executeQuery();
while (rs.next()){
PersistentHouse house = new PersistentHouse(rs.getString(3), rs.getInt(4),
rs.getInt(5), rs.getInt(7),
getServiceHub().getNetworkMapCache().getPeerByLegalName(CordaX500Name.parse(rs.getString(6))));
resultList.add(house);
}
return resultList;
}catch (SQLException se){
throw new FlowException(se.getCause());
}
Примечание: потоки также поддерживают JPA, вы можете использовать serviceHub.withEntityManager