[英]Spring boot postgreSQL
I am writing a web app with Spring Boot, Hibernate and PostgreSQL.我正在用 Spring Boot、Hibernate 和 PostgreSQL 编写一个 Web 应用程序。 I want to learn how to save things in DB, but now I can`t resolve my problem.
我想学习如何在数据库中保存东西,但现在我无法解决我的问题。 I am getting an error caused by my controller by line:
我收到由我的控制器引起的错误:
silniaRepository.save(silniaDB);
error is just:错误只是:
java.lang.NullPointerException
java.lang.NullPointerException
there is my pom:有我的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>
part of my 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();
}
my DB model:我的数据库模型:
@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 +
'}';
}
}
and typical repository interface:和典型的存储库界面:
@Repository
public interface SilniaRepository extends CrudRepository<SilniaDB, Long> {
public SilniaDB findByNumber(Integer number);
}
I really spent a lot of time on that issue.我真的花了很多时间在这个问题上。 Thanks in advance for every comment or answer.
预先感谢您的每一条评论或回答。
Your repository is simply not being injected.您的存储库根本没有被注入。
You have to put @Autowired for each of the dependencies individauly.您必须为每个依赖项单独放置 @Autowired。
@Autowired
private SilniaService silniaService;
@Autowired
private SilniaRepository silniaRepository;
also make those fields as private..还将这些字段设为私有。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.