как многие к одному с аннотацией mybatis

#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. 🙂