【发布时间】:2018-09-03 06:11:07
【问题描述】:
我是 Spring Boot 和制作问答系统的新手。我想根据课程 ID 查找所有问题(这不是主键)。我收到错误消息:“查询没有返回唯一结果: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("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);
}
我知道代码在很多方面都是不完美的,因为我是初学者。我也想要一些改进的建议。谢谢。
【问题讨论】:
-
阅读你的方法:它应该通过课程 ID 找到 all 问题s,但它的返回类型是
Question。应该是List<Question>。此外,您确实需要了解 JPA 的基本原理:在 Question 和 Course 之间应该存在 关联。您不应该在 Question 中有 courseId,而是 Course。
标签: java spring hibernate spring-boot spring-data-jpa