当前位置: 首页 > 知识库问答 >
问题:

找不到int类型的属性时间戳!遍历路径:ScoreCard.score

林铭
2023-03-14

在尝试运行spring-boot应用程序时,我遇到以下错误。

1:

org.springframework.beans.factory.未满足的依赖异常:创建名为用户状态控制器的bean时出错

2:

创建名为“scoreCardRepository”的 bean 时出错:初始化方法的调用失败;嵌套异常是java.lang.IllegalArgumentException:无法为方法公共抽象java.util.List.microservices.book.gamification.repository.ScoreCardRepository.findByUserIdOrderByScoreTimestampDesc(java.lang.Long)创建查询!找不到 int 类型的属性时间戳!遍历路径:记分卡。

我正在使用H2数据库。

记分卡存储库.java

public interface ScoreCardRepository extends CrudRepository<ScoreCard, Long> {

    @Query("SELECT SUM(s.score) FROM microservices.book.gamification.domain.ScoreCard s WHERE s.userId = :userId GROUP BY s.userId")
    int getTotalScoreForUser(@Param("userId") final Long userId);

    @Query("SELECT NEW microservices.book.gamification.domain.LeaderBoard(s.userId, SUM(s.score))"
            + "FROM microservices.book.gamification.domain.ScoreCard s "
            + "GROUP BY s.userId ORDER BY SUM(s.score) DESC")
    List<LeaderBoardRow> findFirst10();

    List<ScoreCard> findByUserIdOrderByScoreTimestampDesc(Long userId);
}

记分卡.java

@Entity
public class ScoreCard {

    public static final int DEFAULT_SCORE = 20;

    @Id
    @GeneratedValue
    @Column(name = "CARD_ID")
    private Long cardId;

    @Column(name = "USER_ID")
    private Long userId;

    @Column(name = "ATTEMPT_ID")
    private Long attemptId;

    @Column(name = "SCORE_TS")
    private long scoreTimeStamp;

    @Column(name = "SCORE")
    private int score;

    public ScoreCard() {
    }

    public ScoreCard(Long userId, Long attemptId) {
        this.cardId = null;
        this.userId = userId;
        this.attemptId = attemptId;
        this.scoreTimeStamp = System.currentTimeMillis();
        this.score = DEFAULT_SCORE;
    }

    public Long getCardId() {
        return cardId;
    }

    public Long getUserId() {
        return userId;
    }

    public Long getAttemptId() {
        return attemptId;
    }

    public long getScoreTimeStamp() {
        return scoreTimeStamp;
    }

    public int getScore() {
        return score;
    }

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((attemptId == null) ? 0 : attemptId.hashCode());
        result = prime * result + ((cardId == null) ? 0 : cardId.hashCode());
        result = prime * result + score;
        result = prime * result + (int) (scoreTimeStamp ^ (scoreTimeStamp >>> 32));
        result = prime * result + ((userId == null) ? 0 : userId.hashCode());
        return result;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        ScoreCard other = (ScoreCard) obj;
        if (attemptId == null) {
            if (other.attemptId != null)
                return false;
        } else if (!attemptId.equals(other.attemptId))
            return false;
        if (cardId == null) {
            if (other.cardId != null)
                return false;
        } else if (!cardId.equals(other.cardId))
            return false;
        if (score != other.score)
            return false;
        if (scoreTimeStamp != other.scoreTimeStamp)
            return false;
        if (userId == null) {
            if (other.userId != null)
                return false;
        } else if (!userId.equals(other.userId))
            return false;
        return true;
    }

    @Override
    public String toString() {
        return "ScoreCard [cardId=" + cardId + ", userId=" + userId + ", attemptId=" + attemptId + ", scoreTimeStamp="
                + scoreTimeStamp + ", score=" + score + "]";
    }

}

UserStatsController.java

@RestController
@RequestMapping("/stats")
public class UserStatsController {

    private GameService gameService;

    @Autowired
    public UserStatsController(GameService gameService) {
        this.gameService = gameService;
    }

    @GetMapping
    public GameStats getStatsForUser(@RequestParam("userId") Long userId) {
        return gameService.retrieveStatsForUser(userId);
    }

}

应用程序.属性

server.port=8081

spring.h2.console.enabled=true
spring.jpa.hibernate.ddl-auto=update
spring.datasource.url=jdbc:h2:file:~/gamification;DB_CLOSE_ON_EXIT=FALSE;
spring.jpa.properties.hibernate.show_sql=true

共有1个答案

郎诚
2023-03-14

您应该将findByUserIdOrderByScoreTimestampDesc更改为FindByUserIdOrder ByScoreTime StampDesc

解释: 实体类的属性必须与默认命名策略匹配 (除非专门配置。

我希望,这能奏效。

您的Entity类的属性名为scoreTimeStamp(时间戳词的大写形式),但在方法声明中,它是scoreTimeStamp

PS:根据您在问题和以下评论中提供的信息,这应该只是问题所在。

 类似资料:
  • 您好,我正在建立一个动物园微服务,包括动物、员工、客户和价格表。我的动物微服务可以工作,但在我的员工微服务中,我遇到了一个错误,即没有为类型“EmployeeModel”找到属性“name”。在问这个问题之前,我已经在网上搜索了几个小时,还有一些类似的问题。我在模型中没有“名字”employee_name,我只是感到困惑,不知道如何修复它。任何指导/建议/信息将不胜感激:)第一次发布,所以我希望我

  • 我有以下实体: 然后我创建我的存储库: 但我一开始就收到: 未找到MyTable类型的属性getCountOf 我到底做错了什么?

  • 我有实体,并且我希望获得按排序的所有项,但是出现错误消息的属性start。 错误日志

  • 我目前正在构建一个烧瓶应用程序 我能够从下面的stackoverflow留言板上得到这么远,但是我不认为我做对了什么(可能忽略了什么?) 在Flask应用中运行Dash应用 这里的任何帮助都将不胜感激 这是我的服务器。py代码: 这是我的服务器。py:从应用程序导入服务器,应用程序服务器。运行(调试=True) 当我运行这一切时,我得到:

  • 问题内容: 我会通过大包装喜欢迭代与GSON。我的最终目标是获取内部对象中所有现有的三位数整数,但是一旦我可以遍历外部对象的属性,就没有问题。 有什么整洁的方法吗? 问题答案: 您可以用来遍历最外层的成员。

  • 我正在尝试解决一个问题,在一棵树上应用广度优先搜索算法和深度优先搜索算法,并找出这两种算法找到的遍历和最终路径。 我实际上感到困惑的是我如何计算这两种不同的路径?它们真的不同吗? 例如,考虑下面的树, 假设,我们的起始节点是A,目标节点是H 对于这两种算法,这就是我所感觉的穿越路径和最终路径 对于BFS 遍历路径:A B C D E F G H 最终路径:A C F H 如果这就是它的工作方式,那