2016-04-30 7 views
0

Application.javaスプリングデータリポジトリは

package com.example; 

import com.example.repository.AuthorRepository; 
import com.example.entities.Author; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.boot.SpringApplication; 
import org.springframework.boot.autoconfigure.SpringBootApplication; 
import org.springframework.context.ApplicationContext; 
import org.springframework.transaction.annotation.Transactional; 

@SpringBootApplication 
public class JpaHibernateApplication { 

    @Autowired 
    private static AuthorRepository authorRepository; 

    @Transactional 
    public static void main(String[] args) { 
     ApplicationContext ctx = SpringApplication.run(JpaHibernateApplication.class, args); 
     for(String name : ctx.getBeanDefinitionNames()){ 
      System.out.println(name); 
     } 
     Author author = new Author(); 
     author.setName("Vamsi"); 
     authorRepository.save(author); 
    } 
} 

Author.javaが動作していない

package com.example.entities; 

import javax.persistence.*; 

@Entity 
@Table(name="author") 
public class Author { 

    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private Long id; 

    private String name; 


    public Long getId() { 
     return id; 
    } 

    public void setId(Long id) { 
     this.id = id; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 




} 

AuthorRepository

package com.example.repository; 

import com.example.entities.Author; 
import org.springframework.data.repository.CrudRepository; 
import org.springframework.stereotype.Repository; 

@Repository 
public interface AuthorRepository extends CrudRepository<Author,Long> { 

} 

application.properties

spring.datasource.url = jdbc:mysql://localhost:3306/Learning?useSSL=false 
    spring.datasource.username = root 
    spring.datasource.password = root 

    # Show or not log for each sql query 
    spring.jpa.show-sql = true 

    # Hibernate ddl auto (create, create-drop, update) 
    spring.jpa.hibernate.ddl-auto = update 

    # Naming strategy 
    spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy 

    # Use spring.jpa.properties.* for Hibernate native properties (the prefix is 
    # stripped before adding them to the entity manager) 

    # The SQL dialect makes Hibernate generate better SQL for the chosen database 
    spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect 

のGradleファイル

buildscript { 
    ext { 
     springBootVersion = '1.3.3.RELEASE' 
    } 
    repositories { 
     mavenCentral() 
    } 
    dependencies { 
     classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") 
    } 
} 

apply plugin: 'java' 
apply plugin: 'eclipse' 
apply plugin: 'spring-boot' 

jar { 
    baseName = 'demo' 
    version = '0.0.1-SNAPSHOT' 
} 
sourceCompatibility = 1.7 
targetCompatibility = 1.7 

repositories { 
    mavenCentral() 
} 


dependencies { 
    compile('org.springframework.boot:spring-boot-starter-data-jpa') 
    compile('org.springframework.boot:spring-boot-starter-web') 
    runtime('mysql:mysql-connector-java') 
    testCompile('org.springframework.boot:spring-boot-starter-test') 
} 


eclipse { 
    classpath { 
     containers.remove('org.eclipse.jdt.launching.JRE_CONTAINER') 
     containers 'org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7' 
    } 
} 

task wrapper(type: Wrapper) { 
    gradleVersion = '2.12' 
} 

私は、アプリケーションの起動時に著者のオブジェクトを永続化しようとしています。しかし、それは以下のヌルポインタ例外を与えています。静的フィールドで

エラー

Exception in thread "main" java.lang.NullPointerException 
    at com.example.JpaHibernateApplication.main(JpaHibernateApplication.java:25) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144) 

答えて

2

オートワイヤリングは動作しません。 authorRepositoryフィールドからstaticキーワードを削除します。また、Springブートアプリケーションの起動後にコードを実行する場合は、インタフェースCommandLineRunnerまたはApplicationRunnerを実装するBeanを作成してください。これらのBeanは、アプリケーションの起動後に実行されます。

-1

はい静的を使用すると、Beanを挿入できないため、NullPointerExceptionが発生します。

関連する問題