Ich bin gerade dabei, eine Spring Boot-Anwendung zu entwickeln, und bin beim Starten des Servers auf diesen Fehler gestoßen. Ich bin nicht sicher, ob ich Anmerkungen falsch definiere oder Abhängigkeiten vermisse. Jede Hilfe wäre dankbar.
Hauptklasse:
@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.
spring-boot-starter-data-jpa zieht alle Abhängigkeiten aus dem Ruhezustand ein, die Sie benötigen. Bei Verwendung von Spring Boot Release 1.5.1 wird Hibernate-Core: 5.0.11 und Hibernate-Entitymanager: 5.0.11 eingezogen. Abgesehen davon, dass Ihre Versionen des Hibernate-Abhängigkeits nicht unnötig sind, ist dies nicht der Fall, was meiner Meinung nach den Fehler verursacht.
Entfernen Sie diese Abhängigkeiten aus Ihrer 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>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-Java</artifactId>
</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>
Hibernate-Core 5.2.0 hat während der Prozesserfassung Probleme mit Spring Data JPA. Hibernate-Core 5.2.1 und höher ist mit Spring Data JPA in Ordnung, wenn Sie Spring Data JPA verwenden.
Ab dem Winterschlaf 5.2.0. Hibernate-Entitymanager wird nicht mehr benötigt.
Versuche also zu ändern:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.1.4.Final</version>
</dependency>
Zu dieser Version:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version> 5.2.1.Final</version>
</dependency>
Das hat es für mich behoben.
Löschen Sie Ihre Abhängigkeiten aus
und aktualisieren Sie Ihre Projektabhängigkeiten entweder über die IDE Update-Abhängigkeiten oder durch Ausführen von mvn install aus dem Projektordner.
Das Problem liegt möglicherweise an einem Versionskonflikt. Das Problem kann durch Angabe der folgenden Abhängigkeit gelöst werden (da die Version nicht erwähnt wird, wird sie automatisch verwaltet).
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-Java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>