【发布时间】:2019-03-25 16:57:12
【问题描述】:
我有两张桌子:
问题表包含:
然后我有另一个名为
的表UserAnswerQuestion 包含:
这有通过question_id提到的问题
问题是每次用户回答问题时,我都会在 db 中创建一行:
question_id user_id 已回答,然后我检查答案是否正确,如果正确,我将通过作为 True,否则我将通过作为 false。
好的,从现在开始一切正常,我无法得到的是我正在创建一个方法,它返回给我 nextQuestion 未回答,但我无法正确执行此方法。
我想要的是有一个查询,首先返回用户尚未回答的所有问题,然后另一个查询仅返回用户尚未回答的问题。
注意:添加此显示的属性是因为我想首先迭代其他问题,而不是显示用户最近失败的问题。
问题清楚了吗?
我尝试了什么?
我已尝试获取问题List<UserAnswerQuestion> findAllByUserEmailAndPassedFalseAndShownFalse(String email);,但它不起作用,因为使用此表我可以知道用户每次尝试的每个答案,例如,如果我有一个有 4 个答案和 1 个答案的问题正确,该表可以包含具有相同 question_question_id 的 4 行,因为用户可能失败了 3 次,然后在第四次正确回答。
编辑
我已经有了用户可以用这种方法回答的问题:
public List<Question> getAllQuestionsThatUserCanAnswer(String email, Long topic){
List<Question> mList = this.questionRepository.findAllByTopicParentId(topic);
if(mList==null) return null;
List<UserAnswerQuestion> userAnswerQuestionList = this.userAnswerQuestionRepository.findAllByUserEmail(email);
for (UserAnswerQuestion userAnswerQuestion : userAnswerQuestionList) {
if(mList.contains(userAnswerQuestion.getQuestion())){
if(userAnswerQuestion.getPassed()){
mList.remove(userAnswerQuestion.getQuestion());
}
}
}
return mList;
}
现在我正在尝试执行此方法的 getNext,但我不知道如何对其进行迭代。
【问题讨论】:
标签: sql spring hibernate jpa spring-data-jpa