JPA会话工厂查询返回空列表

时间:2020-06-24 10:21:16

标签: java spring-boot hibernate jpa spring-data-jpa

我正在开发一个spring boot rest api,在这种情况下,当我使用来自存储库的自定义查询时,它将返回一个空列表,最糟糕的是在eclipse控制台上也不例外。 **** 另一件事********** 我还有另一个控制器,它具有不同的服务和存储库,可以正常工作。 实体

@Entity
@Table(name="Navigation_Master")
public class Navigation_Master {

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    @Column(name="Nav_ID")
    private int Nav_ID;
    
    @Column(name="Nav_TS_ID")
    private int Nav_TS_ID;
    @Column(name="Nav_Application_ID")
    private int Nav_Application_ID;
    @Column(name="Nav_Page_ID")
    private int Nav_Page_ID;
    @Column(name="Nav_Reg_ID")
    private int Nav_Reg_ID;
    @Column(name="Nav_UnloadEvent")
    private String Nav_UnloadEvent;
    @Column(name="Nav_RedirectEvent")
    private String Nav_RedirectEvent;
    @Column(name="Nav_AppCache")
    private String Nav_AppCache;
    @Column(name="Nav_TTFB")
    private String Nav_TTFB;
    @Column(name="Nav_Processing")
    private String Nav_Processing;
    @Column(name="Nav_DomInteractive")
    private String Nav_DomInteractive;
    @Column(name="Nav_DomComplete")
    private String Nav_DomComplete;
    @Column(name="Nav_ContentLoad")
    private String Nav_ContentLoad;
    @Column(name="Nav_PageLoad")
    private String Nav_PageLoad;
    @Column(name="Nav_EntrySyetemTimes")
    private Timestamp Nav_EntrySyetemTimes;
// Getter & setter $ constructors 
}

控制器:

@GetMapping("/getNavs/{tcId}/{appid}/{pageId}/{uId}")
    public List<Navigation_Master> findPageByName(@PathVariable("appid") String appid, @PathVariable("pageId") String pageId, @PathVariable("tcId") String tcId,
                                                    @PathVariable("uId") String uId) {
        return navigation_MasterService.getTopOneNavigation(tcId, appid, pageId, uId);
    }

服务:

@Override
    public List<Navigation_Master> getTopOneNavigation(String appid, String pageId, String tcId, String uId) {
        System.out.println(appid+" " + pageId + " "+ tcId + uId);
        return navigation_MasterReposity.findNavByParam(Integer.parseInt(tcId), Integer.parseInt(appid), Integer.parseInt(pageId), Integer.parseInt(uId));
    }

存储库:

public interface Navigation_MasterReposity extends JpaRepository<Navigation_Master, Integer> {

    @Query(value="select * from Navigation_Master p where p.Nav_TS_ID=:tcid and p.Nav_Application_ID=:apid and p.Nav_Page_ID=:pgid and p.Nav_Reg_ID=:uid order by p.Nav_ID desc", nativeQuery=true) 
    List<Navigation_Master> findNavByParam(@Param("tcid") int tcid,
                                        @Param("apid") int apid,
                                        @Param("pgid") int pgid,
                                        @Param("uid") int uid);
    
}

如果我正在运行此程序,我会得到一个空列表。请帮助我解决问题,谢谢。

1 个答案:

答案 0 :(得分:1)

从控制台/日志中检查所请求的查询是否正确,并且绑定参数中的值正确。

要查看sql和绑定参数,请在application.properties/yaml中添加以下两行:

logging.level.org.hibernate.SQL=DEBUG
logging.level.org.hibernate.type=TRACE

欢呼