Spring Data JPA使用Spring Boot应用程序问题

时间:2015-09-04 09:10:16

标签: spring-boot spring-data spring-data-jpa

我正在使用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, ?)

但是,当我打印值时,值将进入控制器类。

1 个答案:

答案 0 :(得分:0)

我发现了问题。问题出在@GeneratedValue上。我有这个注释,并通过bean发送值。所以这个值变为null。我所做的是删除了这个注释,因为我不希望它是自动生成的。现在,它的工作正常。