Я написал собственную реализацию JPA, используя Spring JPA документацию в качестве ссылки, и я хочу внедрить вышеупомянутую реализацию в сервисный уровень, но я не могу понять, что я делаю неправильно.Я также прошел через следующую документацию .Мое приложение является загрузочным приложением Spring.
В документации не говорится, как инициализировать мою реализацию пользовательского репозитория.Я пытался следовать следующим инструкциям .
Мой уровень обслуживания.
@Service
public class ProfileService implements IProfileService {
@Autowired
private IQuizRepository quizRepository;
. . . . Some methods defined here. . . .
}
Мой интерфейс JPA
@NoRepositoryBean
public interface IQuizRepository extends JpaRepository<Quiz, Long> {
Quiz registerQuiz();
}
Класс бетона
public class QuizRepository extends SimpleJpaRepository<Quiz, Long> implements IQuizRepository {
@PersistenceContext
private EntityManager em;
public QuizRepository(Class<Quiz> clazz, EntityManager em) {
super(clazz, em);
}
/**
* Initialises and returns a quiz attempt.
*/
@Override
public Quiz registerQuiz() {
String uniqueKey = UUID.randomUUID().toString().replaceAll("-", "");
Quiz quiz = new Quiz();
quiz.setQuizId(uniqueKey);
Score score = new Score();
quiz.setScore(score);
score.setQuiz(quiz);
this.save(quiz);
return quiz;
}
}
Когда я не аннотирую QuizRepository
конкретный класс с помощью Repository
, тогда я получаю следующую ошибку:
***************************
APPLICATION FAILED TO START
***************************
Description:
Field quizRepository in com.myproject.service.ProfileService required a bean of type 'com.myproject.repository.IQuizRepository' that could not be found.
Action:
Consider defining a bean of type 'com.myproject.repository.IQuizRepository' in your configuration.
Но когда я аннотирую QuizRepository
с помощью @Repository
, тогда я получаю следующую ошибку
***************************
APPLICATION FAILED TO START
***************************
Description:
Parameter 0 of constructor in com.myproject.repository.QuizRepository required a bean of type 'java.lang.Class' that could not be found.
Action:
Consider defining a bean of type 'java.lang.Class' in your configuration.
Мой проект имеет комбинацию интерфейсов JPA, унаследованных от репозитория JPA, и конкретных реализаций.