Spring Data JPA как смаппить две сущности в одну DTO проекцию?

Допустим есть несколько entity (я их упростил)

@Entity
public class Account  {
    @Id
    private Long accountId;
    @Column
    private String accountName;
    @Column
    private String email;
    @Column
    private String someColumn1;
    @Column
    private String someColumn2;
}

@Entity
public class Channel  {
    @Id
    private Long channelId;
    @Column
    private String channelName;
    @Column
    private String accountId;
    @Column
    private String someColumn1;
    @Column
    private String someColumn2;
}

И есть dto проекция, в которую я хочу выборочно смаппить поля из этих entity

public interface ChannelWithAccontName {
    Long getId();

    String getName();

    Long getAccountId();

    @Query( nativeQuery = true, value = "select a.accountName as accountName "
            + "from account a "
            + "where a.id = id ")
    String getAccountName();
}

есть ChannelRepository в котором есть метод для мапинга бОльшего кол-ва полей

@Repository
public interface ChannelRepository extends JpaRepository<Channel, Long>, JpaSpecificationExecutor<Channel> {
    @Query("select c.id as id, c.channelName as channelName, c.accountId as accountId "
            + "from сhannel c "
            + "where c.id in (:ids) ")
    List<ChannelWithAccontName> getChannelWithAccontName(@Param("ids") List<Long> ids);
}

Проблема в том, что мне нужно подтянуть еще accountName из другой таблицы (репозитория) в дто ChannelWithAccontName. Я пробую решить это с @Query над этим полем, описав там sql запрос, но на выходе всегда получаю accountName null, и по моему запрос вообще не выполняется. Как можно решить эту проблему?


Ответы (0 шт):