Springboot jpa : Сущность не может привязывать данные из пользовательского запроса, которого нет в столбце таблицы

#java #spring-boot #jpa #mapping #entity

Вопрос:

Я использую java Springboot JPA, mysql.

Мне нужно получить данные из моего пользовательского запроса, и некоторые данные (nextBno, beforeBno и т. Д.) Не являются столбцом таблицы БД. Они взяты из моего запроса, как показано ниже:

 (  SELECT boardNo FROM table_news  WHERE boardNo IN (  SELECT MIN(boardNo)  FROM table_news A  WHERE status=0 AND boardNo gt; 65  )  ) AS nextBNo,  

Поэтому, когда я извлекаю данные из запроса, данные извлекаются хорошо, потому что сам запрос в порядке. но результат заполняется как null . Я думаю, что мне следует исправить что-то из файла модели JPA(сущности), чтобы данные могли хорошо связываться, но не знаю точно, как это сделать. Я попытался добавить аннотацию @Transient, но, похоже, это не работает.

NewsModel.java

  @Data  @Entity @Table(name = "table_news") @NoArgsConstructor @AllArgsConstructor @DynamicInsert @DynamicUpdate public class NewsModel {   @Id  @Column(name = "boardNo")  @GeneratedValue(strategy = GenerationType.IDENTITY)  private Integer boardNo;   (...)   @Transient  private Integer nextBNo;  @Transient  private Integer beforeBNo;    (...) }  

NewsResponse.java

 @Data @NoArgsConstructor @AllArgsConstructor public class NewsResponse {   private Integer boardNo;   (...)   @Transient  private Integer nextBNo;  @Transient  private Integer beforeBNo;   (...)   public NewsResponse(NewsModel model){  this.boardNo = model.getBoardNo();    (...)  this.nextBNo = model.getNextBNo();  this.beforeBNo = model.getBeforeBNo();   }  

NewsRepository.java — интерфейс

 @Repository public interface NewsRepository extends JpaRepositorylt;NewsModel, Integergt; {   @Query(value = "(MY CUSTOM QUERY)", nativeQuery = true)  NewsModel getNewsWithNextAndBefore(Integer boardNo); }  

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

1. Попробуйте использовать этот запрос jpa, выберите model.boardNo из модели NewsModel, где model.boardNo в (выберите min(m.boardNo) из новой модели m, где m.status = 0 и m.boardNo gt; 65), возвращаемый тип-целое число, а не модель новостей, и удалите параметр NativeQuery

Ответ №1:

Вы пробовали упомянуть имя «Схема» в классе сущностей? Возможно, таблица не отображается должным образом, это может быть проблемой.