Spring boot Spring数据JPA使用Spring引导应用程序问题
我正在使用Spring Boot处理Spring数据JPA。我已经完成了运行应用程序所需的所有工作。我使用H2作为数据库。但是,在数据库中没有创建任何内容,而且我在访问应用程序时也没有收到任何错误 这里我列出了我为这个应用程序编写的所有代码。有人能告诉我哪些地方可能有问题或丢失了哪些物品吗 我假设H2数据库将在没有任何配置的情况下初始化。我们是否需要application.properties中的任何配置Spring boot Spring数据JPA使用Spring引导应用程序问题,spring-boot,spring-data,spring-data-jpa,Spring Boot,Spring Data,Spring Data Jpa,我正在使用Spring Boot处理Spring数据JPA。我已经完成了运行应用程序所需的所有工作。我使用H2作为数据库。但是,在数据库中没有创建任何内容,而且我在访问应用程序时也没有收到任何错误 这里我列出了我为这个应用程序编写的所有代码。有人能告诉我哪些地方可能有问题或丢失了哪些物品吗 我假设H2数据库将在没有任何配置的情况下初始化。我们是否需要application.properties中的任何配置 @Entity public class Movide implements Serial
@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;
}
}
然后
然后
然后
然后
但是,当我打印这些值时,这些值就进入了控制器类。我发现了问题。问题在于@GeneratedValue。我有这个注释,还通过bean发送值。所以这个值变为null。我所做的是删除了这个注释,因为我不希望它自动生成。现在,它运行良好。对于初学者,我建议扩展Crudepository或JpaRepository,并删除您自己的方法。接下来从您的控制器中删除@Transactional您的服务就是事务边界。最后,请确保您的应用程序类与所有其他组件位于同一个包或超级包中,否则不会检测到任何内容。谢谢您的评论。我已经更新了你的建议。仍然不工作。如前所述,您的应用程序类是在超级包中还是与所有其他组件在同一个包中?它仅在超级包中。我的问题是,我们是否需要schema.sql或data.sql之类的东西来初始化数据库。它将如何自动执行?id字段的空值可能是由于@GeneratedValue注释造成的。很可能是对的。
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, ?)