#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:
Вы пробовали упомянуть имя «Схема» в классе сущностей? Возможно, таблица не отображается должным образом, это может быть проблемой.