#java #spring-data-jpa #spring-data
Вопрос:
У меня возникли некоторые трудности с использованием jpa. Я не получаю никаких исключений, но я не могу ничего сохранить в базе данных. Я перешел из спящего режима в Jpa, и там все работало идеально. Ниже приведены мои файлы
применение.свойства:
logging.level.org.springframework.web=DEBUG logging.level.ch.generali=DEBUG logging.level.org.hibernate.SQL=DEBUG logging.level.org.hibernate.type=TRACE spring.datasource.driver-class-name=org.h2.Driver spring.datasource.username=postgres spring.datasource.password=1234 spring.datasource.url=jdbc:h2:mem:party;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE;MODE=MYSQL spring.jpa.hibernate.ddl-auto=update
Модель:
@Getter @Setter @Builder public class NewClientFormWrapper { //Entity NaturalPerson person; //Entity Address[] addresses; //Entity CommunicationChannel[] communicationChannels; }
Хранилище:
public interface NaturalPersonRepository extends JpaRepositorylt;NaturalPerson, Integergt; { Optionallt;Listlt;NaturalPersongt;gt; getNaturalPersonByFirstname(String inputFirstname); Optionallt;NaturalPersongt; getNaturalPersonById(int id); void deleteNaturalPersonById(int id); }
Обслуживание:
@RestController @RequestMapping("/partner") public class PartnerService { @Autowired NaturalPersonRepository naturalPersonRepository; @PostMapping(value = "/client") @Transactional public ResponseEntitylt;NewClientFormWrappergt; newClient(@RequestBody @Valid NewClientFormWrapper request) { request.getPerson().setAddresses(Arrays.asList(request.getAddresses())); request.getPerson().setCommunicationChannels(Arrays. asList(request.getCommunicationChannels())); NaturalPerson naturalPerson = naturalPersonRepository.save(request.getPerson()); NewClientFormWrapper response = NewClientFormWrapper.builder() .person(naturalPerson) .addresses(naturalPerson.getAddresses().toArray(new Address[0])) .communicationChannels(naturalPerson.getCommunicationChannels().toArray(new CommunicationChannel[0])) .build(); return ResponseEntity.ok(response); } }
Я получаю ответ 200 при отправке формы, но не могу найти данные в базе данных
Комментарии:
1. Вы ищете данные в где?
2. в базе данных вы видите, что я создал пользовательский интерфейс с таблицей, в которой отображаются все пользователи, после того как я ее создам, я смогу видеть пользователя в таблице, но не в базе данных
Ответ №1:
Вы используете базу данных времени выполнения(H2), поэтому при вызове API данные отображаются из памяти. Никакие данные не сохраняются в реальной базе данных. Чтобы сохранить данные в реальной базе данных, вам необходимо задать следующие свойства с фактическим URL-адресом базы данных и драйвером
spring.datasource.url=jdbc:h2:mem:party;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE;MODE=MYSQL spring.datasource.driver-class-name=org.h2.Driver
Комментарии:
1. Сработало! Поскольку я использую postgres, я также сменил драйвер на postgres.