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