首页 > 解决方案 > 如何使用 Spring JPA 检索计算值

问题描述

这是我目前的实现

@Query(value = "SELECT NEW, ID, NAME, MASS_OUTPUT, TEMPERATURE, WATER_OUTPUT, CREATED_DATE, CREATED_USER, MODIFIED_DATE, MODIFIED_USER, PRESSURE_PROFILE_ID, PRESSURE_PROFILE_PRESET_ID,RECIPE_ID,USER_ID FROM \r\n" + 
            "(\r\n" + 
            "(SELECT 1 as Rank, true as NEW, ID, NAME, MASS_OUTPUT, TEMPERATURE, WATER_OUTPUT, CREATED_DATE, CREATED_USER, MODIFIED_DATE, MODIFIED_USER, PRESSURE_PROFILE_ID, PRESSURE_PROFILE_PRESET_ID \r\n" + 
            "FROM RECIPE \r\n" + 
            "where CREATED_DATE > NOW() - INTERVAL 1 DAY)\r\n" + 
            "UNION ALL\r\n" + 
            "(SELECT 2 as Rank, false as NEW, ID, NAME, MASS_OUTPUT, TEMPERATURE, WATER_OUTPUT, CREATED_DATE, CREATED_USER, MODIFIED_DATE, MODIFIED_USER, PRESSURE_PROFILE_ID, PRESSURE_PROFILE_PRESET_ID \r\n" + 
            "FROM RECIPE \r\n" + 
            "where CREATED_DATE < NOW() - INTERVAL 1 DAY)\r\n" + 
            ") \r\n" + 
            "AS A JOIN USER_RECIPE AS B ON ID=RECIPE_ID where B.USER_ID= ?1", 
countQuery = "SELECT count(*) FROM USER_RECIPE WHERE USER_ID = ?1",
nativeQuery = true)
List<UserRecipe> getAllUserRecipesWithPagination(String userId, Pageable sortedByField);

忽略长查询。通过这个查询,我试图首先检索最新的元素(小于 1 天的记录)

“新”不是 UserRecipe 实体中的属性。我将使用 NEW 来识别最新的元素。

我希望用户 @Transient 这样做,但找不到正确的方法来做到这一点。帮助将不胜感激。

标签: javaspringjpaspring-data-jpa

解决方案


推荐阅读