Spring boot Spring数据JPA使用Spring引导应用程序问题

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

我正在使用Spring Boot处理Spring数据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;
    }   
}
然后

然后

然后

然后


但是,当我打印这些值时,这些值就进入了控制器类。

我发现了问题。问题在于@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, ?)