Stack Exchange
реализовать связь OneToMany с помощью jdbcTemplate?
пытаюсь реализовать связь OneToMany с помощью jdbcTemplate
entity:
import lombok.Data;
import org.simpleflatmapper.map.annotation.Key;

import java.util.List;
@Data

public class TemplateOne {
@Key
private int id;
    private String name;
    private String phone;
    private int result;
    List<TemplateTwo> templateTwo;

}


import lombok.Data;
@Data
public class TemplateTwo {
    @Key
    private int id;
    private String name_cat;
    private int price;
}

repository:
import org.simpleflatmapper.jdbc.spring.JdbcTemplateMapperFactory;
import org.simpleflatmapper.jdbc.spring.ResultSetExtractorImpl;
import org.simpleflatmapper.util.TypeReference;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;
import reactor.util.function.Tuple2;
import ua.varus.api.domain.dashbot.lagging.TemplateOne;
import ua.varus.api.domain.dashbot.lagging.TemplateTwo;

import java.util.List;

@Repository
public class TestMapping {
    private JdbcTemplate jdbcTemplate;

    public TestMapping(@Qualifier("dashbot-mssql") JdbcTemplate jdbcTemplateDashbot) {
        this.jdbcTemplate = jdbcTemplateDashbot;
    }

      private static String query = "select  one.id as id, one.name as name, one.phone as phone, one.result as result, two.name_cat as name_cat, two.price as price From DashBoards.dbo.template1 as one\n" +
            " left outer join DashBoards.dbo.template2 as two\n" +
            " ON one.id = two.id Order by  one.id";

    public  List<Tuple2<TemplateOne, List<TemplateTwo>>> executeQuery(){
        ResultSetExtractorImpl<Tuple2<TemplateOne, List<TemplateTwo>>> resultSetExtractor =
                JdbcTemplateMapperFactory
                        .newInstance()
                       .addKeys("id") // the column name you expect the user id to be on
                        .newResultSetExtractor(new TypeReference<Tuple2<TemplateOne, List<TemplateTwo>>>(){});

       List<Tuple2<TemplateOne, List<TemplateTwo>>> googds = jdbcTemplate.query(query,resultSetExtractor);
       return googds;
    }


}

console:
MapperBuildingException: Could not find eligible property for 'id' on  reactor.util.function.Tuple2<ua.varus.api.domain.dashbot.lagging.TemplateOne, java.util.List<ua.varus.api.domain.dashbot.lagging.TemplateTwo>> not found  See https: //github.com/arnaudroger/SimpleFlatMapper/wiki/Errors_PROPERTY_NOT_FOUND


У вас в консоли есть ссылка на github, перейдя по ней, там указано: You can provide an alias to the actual property that you want to map to. что означает, нужно добавить алиас в запросе, должно быть select one.id as id ...

спасибо за отклик, я пробовал, к сожалению не помогло!

Не помогло, та же самая ошибка? Вот пример one to many , можно попробовать взять его за основу

да, та же самая(

У меня последняя догадка, это то, что в TemplateOne и TemplateTwo есть поле id, и не понятно, какой id использовать для этих двух классов, могу порекомендовать переименовать TemplateTwo.id в TemplateTwo.template_one_id, ну и в БД аналогично.

пробовал уже, тоже не помогло(

с id где-то проблема, на втором классе не вижу где есть @Key, может на его отсутствие и ругается
