Я новичок в структуре Micronaut и пытаюсь использовать entitymanager для создания своего репозитория. Я создал свой репозиторий вот так
public interface EmployeeRepository {
Employee save(@NotNull Employee employee);
Employee update(@NotNull Employee employee);
List<Employee> findAll();
Optional<Employee> findById(@NotNull Long id);
}
и я использовал этот класс для реализации интерфейса и внедрения entitymanager
@Singleton
public class EmployeeRepositoryImpl implements EmployeeRepository{
@PersistenceContext
private EntityManager entityManager;
public EmployeeRepositoryImpl(@CurrentSession EntityManager entityManager) {
this.entityManager = entityManager;
}
@Override
@Transactional
public Employee save(@NotNull Employee employee) {
entityManager.persist(employee);
return employee;
}
@Override
@Transactional
public Employee update(@NotNull Employee employee) {
return entityManager.merge(employee);
}
@Override
@Transactional(readOnly = true)
public List<Employee> findAll() {
String qlString = "SELECT * FROM Employee";
TypedQuery<Employee> query = entityManager.createQuery(qlString, Employee.class);
return query.getResultList();
}
@Override
@Transactional(readOnly = true)
public Optional<Employee> findById(@NotNull Long id) {
return Optional.ofNullable(entityManager.find(Employee.class, id));
}
}
Проблема в том, что у меня всегда такая ошибка:
Message: No bean of type [javax.persistence.EntityManager] exists. Ensure the class is declared a bean and if you are using Java or Kotlin make sure you have enabled annotation processing.
Path Taken: new $EmployeeControllerDefinition$Intercepted([EmployeeRepositoryImpl employeeRepository],BeanContext beanContext,Interceptor[] interceptors) --> new $EmployeeRepositoryImplDefinition$Intercepted([EntityManager entityManager],BeanContext beanContext,Interceptor[] interceptors)
io.micronaut.context.exceptions.DependencyInjectionException: Failed to inject value for parameter [entityManager] of class: com.milamed.dao.$EmployeeRepositoryImplDefinition$Intercepted
PS: Я включил обработку аннотаций
io.micronaut.configuration:micronaut-hibernate-jpa
? - person Jeff Scott Brown   schedule 05.03.2019jpa.default.packages-to-scan
не указывало на объекты сущностей (вместо этого указывало на мой пакет DAO). Исправляя это, создаваяEntityManager
. Сообщение об ошибке может быть улучшено ИМО. - person bobmarksie   schedule 22.11.2019