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, и по моему запрос вообще не выполняется. Как можно решить эту проблему?