#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
этого я получил все свои данные.