I am in the process of developing a Spring Boot application and came across this error when starting the server. I am not sure if I am incorrectly defining any annotations or missing any dependencies. Any help would be appreciated.
Main class:
@SpringBootApplication public class FantasyManagerApplication { public static void main(String[] args) { SpringApplication.run(FantasyManagerApplication.class, args); } }
LeagueService.java:
@Service public class LeagueService { @Autowired private LeagueRepository leagueRepository; @Autowired private PlayerRepository playerRepository; @Autowired private TeamRepository teamRepository; /** * Returns a list of all the leagues in the database * @return List<League> */ public List<League> getAllLeagues(){ List<League> leagues = new ArrayList<>(); leagueRepository.findAll() .forEach(leagues::add); return leagues; } /** * Find details for a particular League * @param leagueId * @return League */ public League getLeagueById(long leagueId){ return leagueRepository.findOne(leagueId); } /** * Find the leagueSettings for a particular League * @param leagueId * @return LeagueSettings */ public LeagueSettings getLeagueSettingsById(long leagueId){ return leagueRepository.findOne(leagueId).getLeagueSettings(); } /** * Returns a list of all the Team's in the League * @param leagueId * @return List<Team> */ public List<Team> getTeamsInLeague(long leagueId){ List<Team> teams = new ArrayList<>(); leagueRepository.findOne(leagueId).getTeams() .forEach(teams::add); return teams; } /** * Returns a list of all the Player's in the League * @param leagueId * @return List<Player> */ public List<Player> getPlayersInLeague(long leagueId){ List<Player> players = new ArrayList<>(); leagueRepository.findOne(leagueId).getPlayers() .forEach(players::add); return players; } /** * Returns a list of all the User's in the League * @param leagueId * @return List<User> */ public List<User> getUsersInLeague(long leagueId){ List<User> users = new ArrayList<>(); leagueRepository.findOne(leagueId).getUsers() .forEach(users::add); return users; } /** * Add League to database * @param league */ public void addLeague(League league){ leagueRepository.save(league); } /** * Assign LeagueSettings for a League * @param userId * @param leagueSettings */ public void assignLeagueSettings(long leagueId, LeagueSettings leagueSettings){ League league = leagueRepository.findOne(leagueId); league.setLeagueSettings(leagueSettings); leagueRepository.save(league); } /** * Assign a Player to a League and vice versa * @param leagueId * @param playerId */ public void assignPlayerToLeague(long leagueId, long playerId){ //Find the league and player from the database League league = leagueRepository.findOne(leagueId); Player player = playerRepository.findOne(playerId); //Get the players that the league already has List<Player> players = new ArrayList<>(); players = league.getPlayers(); //Get the leagues that the player is part of List<League> leagues = new ArrayList<>(); leagues = player.getLeagues(); //Assign player to this league and vice versa leagues.add(league); players.add(player); league.setPlayers(players); player.setLeagues(leagues); //Update changes in database playerRepository.save(player); leagueRepository.save(league); } /** * Assign a Team to a League and vice versa * @param leagueId * @param teamId */ public void assignTeamToLeague(long leagueId, long teamId){ //Find the league and player from the database League league = leagueRepository.findOne(leagueId); Team team = teamRepository.findOne(teamId); //Get the teams that are already in the league List<Team> teams = new ArrayList<>(); teams = league.getTeams(); //Assign team to this league and vice versa teams.add(team); league.setTeams(teams); team.setLeague(league); //Update changes in database teamRepository.save(team); leagueRepository.save(league); } /** * Edit the details for a particular League * @param league */ public void updateLeague(League league, long leagueId){ leagueRepository.save(league); } /** * Delete the League from the database * @param leagueId */ public void deleteLeague(long leagueId){ leagueRepository.delete(leagueId); } }
LeagueRepository.java
public interface LeagueRepository extends CrudRepository<League, Long> { }
pom.xml:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.dheeraj</groupId> <artifactId>fantasy-manager</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>fantasy-manager</name> <description>Fantasy Manager Application</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.1.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>4.1.4.Final</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-entitymanager</artifactId> <version>5.2.3.Final</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
Error:
*************************** APPLICATION FAILED TO START *************************** Description: Field leagueRepository in com.dheeraj.service.LeagueService required a bean named 'entityManagerFactory' that could not be found. Action: Consider defining a bean named 'entityManagerFactory' in your configuration.
The LocalContainerEntityManagerFactoryBean gives full control over EntityManagerFactory configuration and is appropriate for environments where fine-grained customization is required. The LocalContainerEntityManagerFactoryBean will create a PersistenceUnitInfo based on the persistence.
To use JPA in a Spring project, we need to set up the EntityManager. This is the main part of the configuration, and we can do it via a Spring factory bean.
Spring Data Jpa provides EnableJpaRepositories annotation which is used to scan the packages for configuration and repository class for Spring Data JPA.
spring-boot-starter-data-jpa will pull in all the hibernate dependencies you need. Using spring boot release 1.5.1, it will pull in hibernate-core:5.0.11 and hibernate-entitymanager:5.0.11. In addition to being unnecessary, your hibernate dependency versions are mismatched which is what I'm guessing is causing the error.
Try removing these dependencies from your pom.xml.
<dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>4.1.4.Final</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-entitymanager</artifactId> <version>5.2.3.Final</version> </dependency>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With