diff --git a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java
index b98d0c8bf8fffb15dfb8120f9dc59c4c6d38ef4e..eaef1742e8b7b477213881cab5daa139e9e5730f 100644
--- a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java
+++ b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java
@@ -771,6 +771,7 @@ public class CouchDBDao implements IDatabaseDao {
 		getDatabase().deleteDocument(d);
 	}
 
+	@CacheEvict("answers")
 	@Override
 	public final void deleteAnswers(final Question question) {
 		try {
@@ -820,7 +821,8 @@ public class CouchDBDao implements IDatabaseDao {
 	}
 
 	@Override
-	public final List<Answer> getAnswers(final String questionId, final int piRound) {
+	public final List<Answer> getAnswers(final Question question, final int piRound) {
+		final String questionId = question.get_id();
 		final NovaView view = new NovaView("skill_question/count_answers_by_question_and_piround");
 		if (2 == piRound) {
 			view.setStartKey(questionId, "2");
@@ -847,6 +849,12 @@ public class CouchDBDao implements IDatabaseDao {
 		return answers;
 	}
 
+	@Cacheable("answers")
+	@Override
+	public final List<Answer> getAnswers(final Question question) {
+		return this.getAnswers(question, question.getPiRound());
+	}
+
 	@Override
 	public int getAbstentionAnswerCount(final String questionId) {
 		final NovaView view = new NovaView("skill_question/count_abstention_answers_by_question");
@@ -1206,6 +1214,7 @@ public class CouchDBDao implements IDatabaseDao {
 		return this.getInfosForVisitedSessions(sessions, user);
 	}
 
+	@CacheEvict(value = "answers", allEntries = true)
 	@Override
 	public Answer saveAnswer(final Answer answer, final User user) {
 		final Document a = new Document();
@@ -1251,6 +1260,7 @@ public class CouchDBDao implements IDatabaseDao {
 		}
 	}
 
+	@CacheEvict(value = "answers", allEntries = true)
 	@Override
 	public Answer updateAnswer(final Answer answer) {
 		try {
@@ -1269,6 +1279,7 @@ public class CouchDBDao implements IDatabaseDao {
 		return null;
 	}
 
+	@CacheEvict(value = "answers", allEntries = true)
 	@Override
 	public void deleteAnswer(final String answerId) {
 		try {
@@ -1527,7 +1538,8 @@ public class CouchDBDao implements IDatabaseDao {
 
 	@Caching(evict = { @CacheEvict(value = "questions", allEntries = true),
 			@CacheEvict(value = "skillquestions", allEntries = true),
-			@CacheEvict("lecturequestions") })
+			@CacheEvict("lecturequestions"),
+			@CacheEvict(value = "answers", allEntries = true)})
 	@Override
 	public void deleteAllLectureQuestionsWithAnswers(final Session session) {
 		final NovaView view = new NovaView("skill_question/lecture_question_by_session");
@@ -1536,7 +1548,8 @@ public class CouchDBDao implements IDatabaseDao {
 
 	@Caching(evict = { @CacheEvict(value = "questions", allEntries = true),
 			@CacheEvict(value = "skillquestions", allEntries = true),
-			@CacheEvict("flashcardquestions") })
+			@CacheEvict("flashcardquestions"),
+			@CacheEvict(value = "answers", allEntries = true)})
 	@Override
 	public void deleteAllFlashcardsWithAnswers(final Session session) {
 		final NovaView view = new NovaView("skill_question/flashcard_by_session");
@@ -1545,7 +1558,8 @@ public class CouchDBDao implements IDatabaseDao {
 
 	@Caching(evict = { @CacheEvict(value = "questions", allEntries = true),
 			@CacheEvict(value = "skillquestions", allEntries = true),
-			@CacheEvict("preparationquestions") })
+			@CacheEvict("preparationquestions"),
+			@CacheEvict(value = "answers", allEntries = true)})
 	@Override
 	public void deleteAllPreparationQuestionsWithAnswers(final Session session) {
 		final NovaView view = new NovaView("skill_question/preparation_question_by_session");
@@ -1671,18 +1685,21 @@ public class CouchDBDao implements IDatabaseDao {
 		}
 	}
 
+	@CacheEvict(value = "answers", allEntries = true)
 	@Override
 	public void deleteAllQuestionsAnswers(final Session session) {
 		final List<Question> questions = getQuestions(new NovaView("skill_question/by_session"), session);
 		deleteAllAnswersForQuestions(questions);
 	}
 
+	@CacheEvict(value = "answers", allEntries = true)
 	@Override
 	public void deleteAllPreparationAnswers(final Session session) {
 		final List<Question> questions = getQuestions(new NovaView("skill_question/preparation_question_by_session"), session);
 		deleteAllAnswersForQuestions(questions);
 	}
 
+	@CacheEvict(value = "answers", allEntries = true)
 	@Override
 	public void deleteAllLectureAnswers(final Session session) {
 		final List<Question> questions = getQuestions(new NovaView("skill_question/lecture_question_by_session"), session);
diff --git a/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java b/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java
index 8695dee2b2b9f7da10d33004ba39e5a1e440660a..bf328a62e590884a152e50ca945c61b10c1feb34 100644
--- a/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java
+++ b/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java
@@ -88,7 +88,9 @@ public interface IDatabaseDao {
 
 	Answer getMyAnswer(User me, String questionId, int piRound);
 
-	List<Answer> getAnswers(String questionId, int piRound);
+	List<Answer> getAnswers(Question question, int piRound);
+
+	List<Answer> getAnswers(Question question);
 
 	int getAnswerCount(Question question, int piRound);
 
diff --git a/src/main/java/de/thm/arsnova/entities/Question.java b/src/main/java/de/thm/arsnova/entities/Question.java
index 7ab74351f9d849909c99d9776ba2f41a265070c3..82812ce3233b37c2101c743ba3db46bfa92a6a9d 100644
--- a/src/main/java/de/thm/arsnova/entities/Question.java
+++ b/src/main/java/de/thm/arsnova/entities/Question.java
@@ -32,6 +32,7 @@ public class Question {
 	private boolean noCorrect;
 	// TODO: We currently need both sessionId and sessionKeyword, but sessionKeyword will not be persisted.
 	private String sessionId;
+	// This property is needed because the client does not have the session ID, only the keyword.
 	private String sessionKeyword;
 	private long timestamp;
 	private int number;
diff --git a/src/main/java/de/thm/arsnova/services/QuestionService.java b/src/main/java/de/thm/arsnova/services/QuestionService.java
index bea2278ddd839278c393dea8e37c3c3455d368b0..28c02274155d27255bc06188e1ed45cb68fe57f5 100644
--- a/src/main/java/de/thm/arsnova/services/QuestionService.java
+++ b/src/main/java/de/thm/arsnova/services/QuestionService.java
@@ -270,7 +270,7 @@ public class QuestionService implements IQuestionService, ApplicationEventPublis
 		}
 		return "freetext".equals(question.getQuestionType())
 				? getFreetextAnswers(questionId)
-						: databaseDao.getAnswers(questionId, piRound);
+						: databaseDao.getAnswers(question, piRound);
 	}
 
 	@Override
@@ -280,7 +280,11 @@ public class QuestionService implements IQuestionService, ApplicationEventPublis
 		if (question == null) {
 			throw new NotFoundException();
 		}
-		return getAnswers(questionId, question.getPiRound());
+		if ("freetext".equals(question.getQuestionType())) {
+			return getFreetextAnswers(questionId);
+		} else {
+			return databaseDao.getAnswers(question);
+		}
 	}
 
 	@Override
diff --git a/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java b/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java
index b9a74fc5766589fc35ed73b9a2f3c0c3ae80dd10..bdb69adf241db104bebc0e370b0fa6efe04bd4ea 100644
--- a/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java
+++ b/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java
@@ -237,12 +237,6 @@ public class StubDatabaseDao implements IDatabaseDao {
 		return null;
 	}
 
-	@Override
-	public List<Answer> getAnswers(String questionId, int piRound) {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
 	@Override
 	public int getAnswerCount(Question question, int piRound) {
 		// TODO Auto-generated method stub
@@ -622,4 +616,16 @@ public class StubDatabaseDao implements IDatabaseDao {
 		// TODO Auto-generated method stub
 		return null;
 	}
+
+	@Override
+	public List<Answer> getAnswers(Question question, int piRound) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public List<Answer> getAnswers(Question question) {
+		// TODO Auto-generated method stub
+		return null;
+	}
 }