在尝试运行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
您应该将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 如果这就是它的工作方式,那