java - Spring 启动 PostgreSQL

标签 java spring spring-boot hibernate jpa

我正在使用 Spring Boot、Hibernate 和 PostgreSQL 编写一个网络应用程序。我想学习如何在数据库中保存东西,但现在我无法解决我的问题。我收到由我的 Controller 引起的错误:

silniaRepository.save(silniaDB);

错误只是:

java.lang.NullPointerException

这是我的pom:

<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 的一部分:

@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();
}

我的数据库模型:

@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 +
                '}';
    }
}

和典型的存储库接口(interface):

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

    public SilniaDB findByNumber(Integer number);
}

我真的在那个问题上花了很多时间。预先感谢您的每一条评论或回答。

最佳答案

您的存储库根本没有被注入(inject)。

您必须为每个依赖项分别添加@Autowired。

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

也将这些字段设为私有(private)..

关于java - Spring 启动 PostgreSQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42903455/

相关文章:

spring-boot - Prometheus 不会从执行器/prometheus 中抓取指标

java - 变量可能还没有初始化?

java - 将 JTextPane 的内容输出到 HTML 文件

java - 向命令行 Spring Boot 应用程序添加对 Spark 的依赖可防止 JVM 退出

java - 使用 hibernate session /JDO persistenceManager 时的 ThreadLocal

Java Spring Boot应用程序获得不同的系统时间

java - 如何使用 spring boot 抑制 url 编码

java - 如何在 Controller 中处理同一页面上的两个表单来执行不同的任务和端点? if语句的格式是什么?

java - Android 的替代关系数据存储方法

spring - CrudRepository 无法解析为类型