JPA включает дополнительные столбцы из других таблиц в запрос

#java #spring #spring-boot #jpa

#java #spring #spring-boot #jpa

Вопрос:

У меня есть таблица сущностей, которая не связывается с другими двумя таблицами. Теперь у меня есть требование включить также два столбца, по одному из каждой из этих таблиц, вместе с моей сущностью в response / dto. Поскольку между таблицами нет связи, я не хочу добавлять объединения в свою сущность, а просто специальный запрос. Есть ли чистый способ сделать это?

например

 @Entity
public class MyEntity {
    @Id private Integer id;
    @Column private String name;
    @Column private String other;
}

public interface MyEntityRepo extends Repository<MyEntity, Integer> {
    @Query("select a.info, b.desc, m.id, m.name, m.other from MyEntity m join TableA a on m.name = a.name join TableB b on m.name = b.name order by m.id")
    List<MyEntityPlus> findAllPlus();
}
  

Я попытался использовать проекцию для создания интерфейса MyEntityPlus , подобного приведенному ниже, но, похоже, это не работает.

 public interface MyEntityPlus {
    String getInfo();  // from TableA
    String getDesc();  // from TableB
    Integer getId();   // from MyEntity
    String getName();  // from MyEntity
    String getOther(); // from MyEntity
}
  

Комментарии:

1. Должно быть хорошо, если вы объявите свой MyEntityPlus как класс и передадите требуемые поля вызову конструктора внутри запроса.

2. Можете ли вы добавить трассировку стека к вопросу?

3. Можете ли вы рассказать нам, почему это не сработало с проекцией?

4.Исключений нет, я получил правильное количество объектов в возвращаемом List , просто такие методы, как getInfo() getName() returns null .