Найти все записи в таблице на основе другого поля, кроме идентификатора в Springboot, используя JPA (условный поиск) - PullRequest
0 голосов
/ 03 сентября 2018

Я новичок в весенней загрузке и создании системы ответа на вопрос. Я хочу найти все вопросы по их идентификатору курса (который не является первичным ключом). Я получаю сообщение об ошибке: « запрос не вернул уникальный результат: 2; вложенное исключение - javax.persistence.NonUniqueResultException: запрос не вернул уникальный результат: 2 ». Я Это моя работа на данный момент.

Класс бобов:

@Entity
@Table(name = "questions")
public class Question {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name="question_id")
    private int question_id;

    @Column(name="question")
    private String question;

    @Column(name="course_id")
    private int courseId;

    //getters and setters
}

Repository:

@Repository("questionRepository")
public interface QuestionRepository extends CrudRepository<Question, Integer>{
    Question findAllByCourseId(int courseId);
}

Услуги:

public interface QuestionService {
    Question save(Question question);
    List<Question> listAllQuestion();
    Question findByQuestionName(String questionName);
    List<Question> findAllByCourseId(int courseId);
}

Реализация сервиса:

public List<Question> findAllByCourseId(int courseId) {
    return (List<Question>) questionsRepository.findAllByCourseId(courseId);
}

Я знаю, что код несовершенен во многих отношениях, поскольку я новичок. Я тоже хочу несколько предложений по улучшению. Спасибо.

Ответы [ 2 ]

0 голосов
/ 03 сентября 2018

Поскольку CourseId не является первичным ключом, поэтому курс содержит много курсов, принадлежащих одному CourseId.

Поэтому убедитесь, что если вы получаете много записей, используйте List в качестве типа возврата.

1) В вашем вопросе репозиторий. Сделайте ниже изменения.

List<Question> findAllByCourseId(int courseId);
0 голосов
/ 03 сентября 2018

Вы должны изменить свой поиск в хранилище на список, потому что у вас есть несколько вопросов с одинаковым идентификатором курса.

List<Question> findAllByCourseId(int courseId);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...