Как показать список навыков, отсортированный по количеству лайков в Spring Boot и Thymeleaf с помощью Pageable? - PullRequest
0 голосов
/ 25 мая 2020

Я пытаюсь получить список навыков, отсортированных по количеству лайков в Spring Boot и Thymeleaf с Pageable, но у меня возникают проблемы. Я не знаю, как это сделать. Как лучше всего решить эту проблему?

Edit. Ошибка: org.springframework.beans.factory.UnsatisfiedDependencyException: Ошибка создания bean-компонента с именем «accountController»: неудовлетворенная зависимость, выраженная через поле «skillRepository»; вложенное исключение - org.springframework.beans.factory.BeanCreationException: ошибка при создании bean-компонента с именем «skillRepository»: не удалось вызвать метод инициализации; вложенное исключение: java .lang.IllegalArgumentException: не удалось создать запрос для метода publi c abstract java .util.List projekti.Skill.SkillRepository.findAllSkills (projekti.Account.Account, org.springframework.data.domain .Pageable)! Не найдено свойство findAllSkills для типа Skill!

AccountController. java

@GetMapping("/profile/{path}")
public String profile(Model model, @PathVariable String path) {
     Account account = accountRepository.findByPath(path);
     Pageable pageable = PageRequest.of(0, 5, Sort.by("likes").descending());
     model.addAttribute("skills", skillRepository.findAllSkills(account, pageable));

     return "profile";
}

Skill. java

@Entity
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Skill extends AbstractPersistable<Long> {

    @NotEmpty
    @Size(min = 1, max = 50)
    @Column
    private String name;

    @ManyToMany
    @JoinTable(
        name="who_liked",
        joinColumns=
            @JoinColumn(name="skill_id", referencedColumnName="id"),
        inverseJoinColumns=
            @JoinColumn(name="like_account_id", referencedColumnName="id"))
    private List<Account> likes = new ArrayList<>();  
}

SkillRepository. java

public interface SkillRepository extends JpaRepository<Skill, Long> {
    List<Skill> findAllSkills(Account account, Pageable pageable);
}

Профиль. html

<li th:each="skill : ${skills}">
      <span th:text="${skill.name}">skill</span>
      <form th:action="@{/profile/{path}/skill/{id}/like(path=${path}, id=${skill.id})}" method="POST">
            <input type="hidden" id="skillLike" name="skillLike" value="skillLike"/>
            <button type="submit"><span th:text="${#lists.size(skill.likes)}">likes</span></button> 
            <span> likes</span>                 
     </form>
</li>

1 Ответ

0 голосов
/ 26 мая 2020

findAllSkills отсутствует в интерфейсе JpaRepository, вы можете изменить его на findAll

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...