Предполагаемая переменная типа (S) - PullRequest
0 голосов
/ 28 августа 2018

Мне нужна помощь с этим, я не понимаю, что делать у меня есть эти ошибки, и я не могу с ними справиться, я пробовал несколько вещей, но пока ничего не получалось

Ошибка 1:

Ошибка: (56, 35) Java: метод существует в интерфейсе org.springframework.data.repository.query.QueryByExampleExecutor не может быть применен к данным типам; требуется: org.springframework.data.domain.Example найдено: java.lang.Integer причина: не могу вывести переменную типа (ов) S (несоответствие аргумента; java.lang.Integer не может быть преобразовано в org.springframework.data.domain.Example)

Ошибка 2:

Ошибка: (60, 49) java: метод findOne в интерфейсе org.springframework.data.repository.query.QueryByExampleExecutor нельзя применить к данным типам; требуется: org.springframework.data.domain.Example найдено: java.lang.Integer причина: не могу вывести переменную типа (ов) S (несоответствие аргумента; java.lang.Integer не может быть преобразовано в org.springframework.data.domain.Example)

ArticleController.java

@Controller
public class ArticleController {
    @Autowired
    private ArticleRepository articleRepository;
    @Autowired
    private UserRepository userRepository;

    @GetMapping("/article/create")
    @PreAuthorize("isAuthenticated()")
    public String create(Model model){
        model.addAttribute("view", "article/create");

        return "base-layout";
    }

    //method calling for creating the article
    @PostMapping("/article/create")
    @PreAuthorize("isAuthenticated()")
    public String createProcess(ArticleBindingModel articleBindingModel){
        UserDetails user = (UserDetails) SecurityContextHolder.getContext()
                .getAuthentication().getPrincipal();

        User userEntity = 
        this.userRepository.findByEmail(user.getUsername());

        Article articleEntity = new Article(
                articleBindingModel.getTitle(),
                articleBindingModel.getContent(),
                userEntity
        );

        this.articleRepository.saveAndFlush(articleEntity);

        return "redirect:/";
    }

    @GetMapping("/article/{id}")
    public String details(Model model, @PathVariable Integer id){

        if(!this.articleRepository.exists(id)){
            return "redirect:/";
        }

        Article article = this.articleRepository.findOne(id);

        model.addAttribute("article", article);
        model.addAttribute("view", "article/details");

        return "base-layout";
    }
}

Вот моя статья Entity

@Entity
@Table(name = "articles")
public class Article {
    private Integer id;
    private String title;
    private String content;
    private User author;


    public Article() {

    }
    //article constructor
    public Article(String title, String content, User author){
        this.title = title;
        this.content = content;
        this.author = author;
    }

    @Transient
    public String getSummary(){
        return this.getContent().substring(0, this.getContent().length() /2) + ". . .";
    }

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    @Column(nullable = false)
    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    @Column(columnDefinition = "text", nullable = false)
    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    @ManyToOne()
    @JoinColumn(nullable = false, name = "authorId")
    public User getAuthor() {
        return author;
    }

    public void setAuthor(User author) {
        this.author = author;
    }

}

ArticleRepository.java

public interface ArticleRepository extends JpaRepository<Article, Integer> {

}

1 Ответ

0 голосов
/ 29 августа 2018

Смотрите ответ на похожий вопрос: https://stackoverflow.com/a/49224641/2031954

TL, DR: методы exists и findOne получают экземпляр Example<S> в качестве аргумента, поэтому вы используете их неправильно. Вместо этого используйте existsById и findById.

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