[英]Find all records in a table based on other field than ID in springboot using JPA(Conditional Search)
我是 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 的問題。
List<Question> findAllByCourseId(int courseId);
由於 courseId 不是主鍵,因此 course 包含許多屬於一個 CourseId 的課程。
因此,請確保您正在檢索許多記錄,然后使用 List 作為返回類型。
1) 在您的 questionRepository.Make 下面更改。
List<Question> findAllByCourseId(int courseId);
0
不,您不需要進行條件查詢,這將是樣板代碼,如果您在 Spring-boot 中工作,您只需做簡單的事情:在您的存儲庫中使用findBy[exact field name]聲明一個方法名稱。 示例 - 如果您的模型或文檔包含一個字符串字段myField並且您想通過它查找,那么您的方法名稱將是:
findBymyField(String myField);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.