2017-03-20 5 views
1

私はSpringブート、Hibernate、PostgreSQLでWebアプリケーションを作成しています。私はDBに物事を保存する方法を学びたいが、今は私の問題を解決できない。私はラインで私のコントローラによって引き起こされるエラーを取得しています:スプリングブートpostgreSQL

silniaRepository.save(silniaDB); 

エラーがちょうどです:

java.lang.NullPointerExceptionが

私のポンポンがある:

<name>silnia</name> 
<description>Demo project for Spring Boot</description> 
<parent> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-parent</artifactId> 
    <version>1.5.2.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-thymeleaf</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-web</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.postgresql</groupId> 
     <artifactId>postgresql</artifactId> 
     <scope>runtime</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-test</artifactId> 
     <scope>test</scope> 
    </dependency> 
</dependencies> 
<build> 
    <plugins> 
     <plugin> 
      <groupId>org.mortbay.jetty</groupId> 
      <artifactId>jetty-maven-plugin</artifactId> 
      <version>8.1.5.v20120716</version> 
     </plugin> 
     <plugin> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-maven-plugin</artifactId> 
     </plugin> 
    </plugins> 
</build> 
</project> 

マイコンの一部:

@Controller 
public class SilniaController { 
    @Autowired 
    public SilniaService silniaService; 
    public SilniaRepository silniaRepository; 
    public SilniaDB silniaDB; 

    @RequestMapping("/db") 
    @ResponseBody 
    public String testMethod() { 

    StringBuilder response = new StringBuilder(); 

    SilniaDB silniaDB = new SilniaDB() 
      .setNumber1(23); 
    silniaRepository.save(silniaDB); 

    for (SilniaDB i : silniaRepository.findAll()) { 
     response.append(i).append("<br>"); 
    } 

    return response.toString(); 
} 

私のDBモデル:

@Entity 
public class SilniaDB { 

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

    @Column 
    private int number; 

    public int getNumber() { 
     return number; 
    } 

    public void setNumber (int number){this.number=number;} 

    public SilniaDB setNumber1(int number) { 
     this.number = number; 
     return this; 
    } 

    public SilniaDB withNumber(final int number) { 
     this.number = number; 
     return this; 
    } 

    public Long getId() { 
     return id; 
    } 

    public void setId(Long id) { 
     this.id = id; 
    } 
    @Override 
    public String toString() { 
     return "TaskEntity{" + 
       "id=" + id + 
       "number=" + number + 
       '}'; 
    } 
} 

と、典型的なリポジトリインタフェース:

@Repository 
public interface SilniaRepository extends CrudRepository<SilniaDB, Long> { 

    public SilniaDB findByNumber(Integer number); 
} 

私は本当に問題に多くの時間を費やしました。すべてのコメントや回答に感謝します。

答えて

2

あなたのリポジトリは単に注入されていません。

それぞれの依存関係に@Autowiredを指定する必要があります。

@Autowired 
private SilniaService silniaService; 
@Autowired 
private SilniaRepository silniaRepository; 

もプライベートとしてそれらのフィールドを作る。..

関連する問題