首页 > 解决方案 > Springboot jpa:实体无法绑定不在表列中的自定义查询中的数据

问题描述

我使用java Springboot JPA,mysql。

我需要从我的自定义查询中获取数据,并且某些数据(nextBno、beforeBno 等)不是 DB 表列。它们来自我的查询,如下所示:

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

因此,当我从查询中获取数据时,数据获取很好,因为查询本身很好。但结果填充为null。我想我应该从 JPA 模型(实体)文件中修复一些东西,以便数据可以很好地绑定,但不知道具体如何。我尝试添加 @Transient 注释,但它似乎不起作用。

新闻模型.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;
    
    (...)
}

新闻响应.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 JpaRepository<NewsModel, Integer> {

    @Query(value = "(MY CUSTOM QUERY)", nativeQuery = true)
    NewsModel getNewsWithNextAndBefore(Integer boardNo);
}

标签: javaspring-bootjpamappingentity

解决方案


您是否尝试过在实体类下提及“架构”名称?也许表格没有正确映射,这可能是一个问题。


推荐阅读