#mybatis
#mybatis
Вопрос:
Я надеюсь, вы поймете, что я ищу в аннотации MyBatis
Таблица A возвращает мне много значений. Таблица B возвращает мне одно значение для каждого значения таблицы A.
И я хотел бы сохранить все значения из таблицы B в виде списка.
Я могу сделать это, выполнив запрос. Один из таблицы A, получите список и сделайте «if» с запросом для таблицы B и сохраните результат в списке.
Но я пытаюсь посмотреть, смогу ли я сделать что-то подобное:
@Select(SELECT id FROM table_A WHERE a_value = #{aValue})
@Results({
@Result(property = "images", javaType = List.class, column="id",
one= @One(select = "findOneValueInTableB"))})
list<String> fingManyThingsInTableA(string aValue);
@Select(SELECT value FROM table_B WHERE id_table_A = #{id})
String findOnValueInTableB(int id);
К сожалению, это не работает и выдает следующую ошибку:
«вложенным исключением является org.apache.ibatis.exceptions.Исключение TooManyResultsException: ожидалось, что SelecTone () вернет один результат (или null), но найдено: 2 «
Отредактировано, чтобы показать таблицы и результат, который я ожидаю
Ожидаемый результат:
[value1, value2, value3, value 4]
Спасибо за вашу помощь и ваши предложения.
Комментарии:
1. Какой язык вы используете? Это не Java??
list<String value> fingManyThingsInTableA(something);
. Мне кажется, что вы получаете больше результатов, чем можно было бы сохранить в одной строке.String value findOnValueInTableB(id_from_tableA);
.2. Я использую JAVA, но то, что я написал для кода, — это объяснение.
3. Позвольте мне написать это более правильным способом
4. @JBD Это лучше! Итак, проще говоря, вам нужен только один столбец
table_b
? Тогда вам, вероятно, следует подумать о написании запроса с помощью JOIN, напримерselect table_b.a_value from table_a inner join table_b on table_a.id = table_b.id_table_A
. Или запрос с вложенным выбором, как кто -то предложил.5. @jbd С MyBatis сначала используется SQL. И вы используете MyBatis для сопоставления этого SQL с объектами Java. 🙂