Я использую Spring JPA в своем проекте. Компонент моего репозитория не вызывается. Я получаю исключение null pointerException.
Мой репозиторий:
public interface UserRepository extends JpaRepository<User, Long>{
}
URL моего объекта:
@Entity
@Table(name = "user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
long id;
@Column(name = "emailid")
String emailId;
@Column(name = "role")
UserRole role;
}
Моя конфигурация JPA:
@Configuration
@EnableJpaRepositories(entityManagerFactoryRef = "appentitymanagerfactory",
transactionManagerRef = "apptransactionmanager",
basePackages = "com.tree.employeeapp.entity")
public class JpaConfiguration {
@Bean
(name = "appentitymanagerfactory")
public LocalContainerEntityManagerFactoryBean externalEntityManagerFactory(
EntityManagerFactoryBuilder builder, @Qualifier("employeeappdatasource") DataSource dataSource) {
return builder.dataSource(dataSource)
.packages("com.tree.employeeapp.entity")
.build();
}
@Bean(name = "apptransactionmanager")
public PlatformTransactionManager barTransactionManager(
@Qualifier("appentitymanagerfactory") EntityManagerFactory
entityManagerFactory
) {
return new JpaTransactionManager(entityManagerFactory);
}
}
Мой контроллер такой:
@Controller
public class treeAppsControllerImpl implements treeAppsController{
private UserRepository userRepository;
@Autowired
public treeAppsControllerImpl(UserRepository userRepository) {
this.userRepository = userRepository;
}
@Override
public String getAllUsers(Model model) {
List<Users> listOfUsers = new ArrayList<>();
for(User user: userRepository.findAll())
listOfUser.add(user);
List<User> listOfUser = UserRepository.findAll();
model.addAllAttributes(listOfUsers);
return "getAllUsers";
}
журнал показывает эту ошибку:
Параметр 0 конструктора в com.tree.employeeapp.controller.treeAppsControllerImpl требовал bean-объекта типа com.tree.employeeapp.repository.UserRepository, который не удалось найти. Действие: Рассмотрите возможность определения bean-компонента типа com.tree.employeeapp.repository.UserRepository в вашей конфигурации.
Это возможно, но я читал, что когда мы используем @EnableJPARepository, Spring автоматически создает bean-компонент расширенных интерфейсов JPARepository. Это для одного уровня репозитория. что, если существует 20 различных уровней DAO репозитория?
Действительно ли UserRepository находится в упаковке, com.tree.employeeapp.entity как указано в @EnableJpaRepositories#basePackages?
Нет, он находится в com.tree.employeeapp.repository
Тогда это должно быть то, на что указывает basePackages.




Отметить UserRepository как репозиторий
@Repository
public interface UserRepository extends JpaRepository<User, Long>{
}