私はSpring Bootアプリケーションを開発中ですが、サーバーの起動時にこのエラーに遭遇しました。注釈を誤って定義しているか、依存関係が欠落しているかどうかはわかりません。任意の助けをいただければ幸いです。
メインクラス:
@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>
エラー:
***************************
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は、必要なすべての休止状態の依存関係を取得します。スプリングブートリリース1.5.1を使用すると、hibernate-core:5.0.11およびhibernate-entitymanager:5.0.11を取り込みます。不要であることに加えて、休止状態の依存関係のバージョンが一致していないため、エラーが発生していると推測しています。
これらの依存関係を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>
Hibernate-core 5.2.0では、プロセスの収集中にSpring Data JPAに問題があります。 Spring Data JPAを使用する場合、Hibernate-core 5.2.1以上はSpring Data JPAで問題ありません。
休止状態以降5.2.0。 hibernate-entitymanagerは不要になりました。
だから変更しよう:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.1.4.Final</version>
</dependency>
このバージョンへ:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version> 5.2.1.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>
から依存関係を削除してみてください
iDEの更新依存関係機能を使用するか、プロジェクトのフォルダーからmvn installを実行して、プロジェクトの依存関係をさらに更新します。
問題はバージョンの不一致が原因である可能性があります。このような依存関係を指定することで問題を解決できます(バージョンは言及されていないため、自動管理されます)
<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>