2017-02-11 12 views
4

私はSpringブートアプリケーションを開発中で、サーバ起動時にこのエラーが発生しました。注釈が間違って定義されているか、依存関係がないかはわかりません。どんな助けもありがとう。Springブート - リポジトリフィールドに 'entityManagerFactory'という名前のBeanが見つかりませんでした。

メインクラス:

@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. 
+0

あなたはJPAの自動設定を実行していないようです。スターターとデータベース接続があることを確認してください。 – chrylis

+0

@chrylis - JPAの自動設定を実行するにはどうすればよいですか?私はapplication.propertiesにmysqlデータベースへの接続を確立しました – Dheeraj

+7

あなたはHibernateの依存関係が不一致です。バージョン番号を削除し、Bootでそれらを管理させるだけです。 – chrylis

答えて

11

春ブート・スターター・データ-JPAはあなたが必要とするすべての休止状態の依存関係に引っ張ってきます。 Springブートリリース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> 
0

<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> 
関連する問題