У меня есть таблица sql со столбцами: id, code, code_parent и тип кода:
id code code_parent type
1 banane fruit CU
2 fruit food GU
3 food eat BU
4 tomato vegetable BU
Я пытаюсь написать al oop, чтобы для каждого кода был код родитель с уровнем BU, например, фрукт с идентификатором 2, имеет родительский элемент food, но с уровнем GU, отличным от BU, поэтому в этом случае я буду искать родительский элемент food, который я буду рассматривать как код, в id = 3 еда с уровнем 3, так что это желаемый результат, в сумме я получу
id code code_parent type
1 banana food BU
2 fruit food BU
3 food eat BU
4 tomato vegetable BU
Я пробовал это, но это не работает, пожалуйста, если у вас есть идеи, помогите.
private void insertParentBu(List<Map<String, Object>> parentBu) {
parentBu.forEach(row -> {
String insertParentBu = "INSERT INTO `parent_bu` (`uo`,`parent_bu`,`type_parent`)" +
"VALUES (?, ?, ?)";
myrefJdbcTemplate.update(insertParentBu, preparedStatement -> {
logger.info("Inserting uo {} , parent {}, level {}" , row.get("code"), row.get("code_parent") , row.get("level"));
preparedStatement.setString(1, String.valueOf(row.get("code")));
preparedStatement.setString(2, String.valueOf(row.get("code")));
preparedStatement.setString(3, String.valueOf(row.get("level")));
});
String updateBuparent = "UPDATE `parent_bu` SET `parent_bu` = ? , `type_parent` = ? WHERE `uo` = ? AND type_parent <> 'BU' AND parent_bu <> '' ";
myrefJdbcTemplate.update(updateBuparent, preparedStatement -> {
preparedStatement.setString(1,String.valueOf(row.get("code_parent")));
preparedStatement.setString(2,String.valueOf(row.get("level")));
preparedStatement.setString(3,String.valueOf(row.get("code")));
});
}
);
}