我正在使用Spring Boot处理Spring Data JPA。我已经完成了运行应用程序所需的一切。我使用H2作为数据库。但是,数据库中没有创建任何内容,访问应用程序时也没有出现任何错误。
这里我列出了我为此应用程序编写的所有代码。任何人都可以建议可能出错或丢失的物品。
我假设H2数据库将在没有任何配置的情况下进行初始化。我们是否需要application.properties中的任何配置?
@Entity
public class Movide implements Serializable{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
long id;
@Column(name="name")
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;
}
}
然后
public interface MovieRepository extends JpaRepository<Movie,Long> {
}
然后
@Service
@Transactional
public class MovieService {
@Autowired
private MovieRepository movieRepository;
public void saveMovie(Movie movie){
movieRepository.save(movie);
}
public Movie findOne(long id){
return movieRepository.findOne(id);
}
}
然后
@RestController
@RequestMapping(value="/movies")
public class MoviessController {
@Autowired
private MovieService movieService;
@RequestMapping(value="/movie/{id}")
public Movie getMovie(@PathVariable int id){
Movie movie = movieService.findOne(id);
System.out.println("Id : "+movie.getId());
return movie;
}
@RequestMapping(value="/movie/add/{id}")
public Movie addMovie(@PathVariable int id){
Movie movie = new Movie();
movie.setId(id);
movie.setName("Movie 1");
movieService.saveMovie(movie);
return movie;
}
然后
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
然后
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.2.5.RELEASE</version>
</parent>
<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-web</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<finalName>spring-boot-web-app-example</finalName>
</build>
当我启用日志时,我发现没有这样的值的日志:
Hibernate: select book0_.id as id1_0_0_, book0_.name as name2_0_0_ from book book0_ where book0_.id=?
Hibernate: insert into book (id, name) values (null, ?)
但是,当我打印值时,值将进入控制器类。
答案 0 :(得分:0)
我发现了问题。问题出在@GeneratedValue上。我有这个注释,并通过bean发送值。所以这个值变为null。我所做的是删除了这个注释,因为我不希望它是自动生成的。现在,它的工作正常。