Интеграция базы данных H2 с Spring Boot

#java #spring-boot #rest

Вопрос:

Я пытаюсь интегрировать базу данных H2 в свой текущий проект. Но, похоже, мои данные не сохранены в базе данных.

У меня есть способ отправки запроса здесь:

 @PostMapping(value = "/api/code/new", produces = "application/json")  public ResponseEntitylt;?gt; postCodeSnippet(@RequestBody Code rqstCode) {  Code nextCode = new Code(idCounter  , rqstCode.getCode(), LoadDate.getLoadDate());  System.out.println(nextCode.getId());  codeList.add(nextCode);  codeService.saveOrUpdate(rqstCode);  return ResponseEntity.ok(new DTOCode(String.valueOf(nextCode.getId())));  }  

где находится codeService.saveOrUpdate (), должен был отправить его в мою базу данных, но не сделал этого. Моя база данных всегда пуста. Но другие части программы работают довольно хорошо.

Вот мой Code.java класс:

  import com.fasterxml.jackson.annotation.JsonIgnore;  import javax.persistence.*;  @Entity public class Code {   @JsonIgnore  @Id  @GeneratedValue(strategy = GenerationType.AUTO)  private Long id;  private String code;  private String date;   public Code() {  }   public Code(Long id, String code, String date) {  this.id = id;  this.code = code;  this.date = date;  }   public String getCode() {  return code;  }   public void setCode(String code) {  this.code = code;  }   public String getDate() {  return date;  }   public void setDate(String date) {  this.date = date;  }   public void setId(Long id) {  this.id = id;  }   public Long getId() {  return id;  } }  

Вот мой CodeRepository.java интерфейс:

  import org.springframework.data.repository.CrudRepository;  public interface CodeRepository extends CrudRepositorylt;Code, Longgt; {  }   

Вот мой CodeService.java класс

  import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service;  import java.time.Period; import java.util.List;  @Service public class CodeService {   @Autowired  CodeRepository codeRepository;   public Code getCodeById(Long id) {  return codeRepository.findById(id).get();  }   public void saveOrUpdate(Code code) {  codeRepository.save(code);  }   public void delete(Long id) {  codeRepository.deleteById(id);  }  }   

применение.свойства

 server.port=8889 management.endpoints.web.exposure.include=* management.endpoint.shutdown.enabled=true spring.datasource.url=jdbc:h2:file:../snippets spring.datasource.driverClassName=org.h2.Driver spring.datasource.username=sa spring.datasource.password=  spring.jpa.database-platform=org.hibernate.dialect.H2Dialect spring.jpa.hibernate.ddl-auto=update  spring.h2.console.enabled=true spring.h2.console.settings.trace=false spring.h2.console.settings.web-allow-others=false  

Комментарии:

1. Как вы настроили базу данных? Покажите свое приложение.свойства

2. @SimonMartinelli готово.

3. И как вы проверяете базу данных, о которой говорите, что она пуста?

4. @SimonMartinelli чтобы проверить это, я всегда захожу на локальный хост:8889/h2-консоль . Там должны быть мои данные. Но теперь только пустой столик.

5. Вы включили ведение журнала SQL, чтобы проверить, есть ли инструкция insert?

Ответ №1:

После SELECT * FROM CODE этого я получил все свои данные.