Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Caused by: org.hibernate.exception.DataException: could not execute query

Caused by: org.h2.jdbc.JdbcSQLIntegrityConstraintViolationException: Referential integrity constraint violation: "FKCAAOGJO0YND54UPDIE6KDPXD1: PUBLIC.TOPICO FOREIGN KEY(CURSO_ID) REFERENCES PUBLIC.CURSO(ID)"; SQL statement: alter table topico add constraint FKcaaogjo0ynd54updie6kdpxd1 foreign key (curso_id) references curso [23506-200]

data.sql

CREATE TABLE USUARIO(ID UUID DEFAULT RANDOM_UUID() PRIMARY KEY,NOME VARCHAR, EMAIL VARCHAR, SENHA VARCHAR); CREATE TABLE CURSO(ID UUID DEFAULT RANDOM_UUID() PRIMARY KEY, NOME VARCHAR, CATEGORIA VARCHAR); CREATE TABLE TOPICO(ID UUID DEFAULT RANDOM_UUID() PRIMARY KEY,TITULO VARCHAR , MENSAGEM VARCHAR,DATA_CRIACAO VARCHAR ,STATUS VARCHAR , AUTOR_ID INT, CURSO_ID INT); INSERT INTO USUARIO(nome, email, senha) VALUES('Aluno', 'aluno@email.com', '123456');

INSERT INTO CURSO(nome, categoria) VALUES('Spring Boot', 'Programação'); INSERT INTO CURSO(nome, categoria) VALUES('HTML 5', 'Front-end');

INSERT INTO TOPICO(titulo, mensagem, data_criacao, status, autor_id, curso_id) VALUES('Dúvida', 'Erro ao criar projeto', '2019-05-05 18:00:00', 'NAO_RESPONDIDO', 1, 1); INSERT INTO TOPICO(titulo, mensagem, data_criacao, status, autor_id, curso_id) VALUES('Dúvida 2', 'Projeto não compila', '2019-05-05 19:00:00', 'NAO_RESPONDIDO', 1, 1); INSERT INTO TOPICO(titulo, mensagem, data_criacao, status, autor_id, curso_id) VALUES('Dúvida 3', 'Tag HTML', '2019-05-05 20:00:00', 'NAO_RESPONDIDO', 1, 2);

5 respostas

Oi Raquel,

Altera no seu arquivo application.properties essa propriedade de update para create:

spring.jpa.hibernate.ddl-auto=create

No http://localhost:8080/topicos o array fica vazio

package br.com.alura.forum.controller;

import br.com.alura.forum.controller.dto.TopicoDto; import br.com.alura.forum.modelo.Topico; import br.com.alura.forum.repository.TopicoRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController public class TopicosController {

@Autowired
private TopicoRepository topicoRepository;

@RequestMapping("/topicos")
public List<TopicoDto> lista() {
    List<Topico> topicos = topicoRepository.findAll();
    return TopicoDto.converter(topicos);
}

}

Oi Raquel,

Confere também se tem essa propriedade que entrou desde a versão 2.5 do spring boot:

spring.jpa.defer-datasource-initialization=true
solução!

Resolvido

-- Alterei no seu arquivo application.properties

  • spring.jpa.defer-datasource-initialization=true
  • spring.jpa.hibernate.ddl-auto=update

-- Retirei do data.sql

CREATE TABLE USUARIO(ID UUID DEFAULT RANDOM_UUID() PRIMARY KEY,NOME VARCHAR, EMAIL VARCHAR, SENHA VARCHAR); CREATE TABLE CURSO(ID UUID DEFAULT RANDOM_UUID() PRIMARY KEY, NOME VARCHAR, CATEGORIA VARCHAR); CREATE TABLE TOPICO(ID UUID DEFAULT RANDOM_UUID() PRIMARY KEY,TITULO VARCHAR , MENSAGEM VARCHAR,DATA_CRIACAO VARCHAR ,STATUS VARCHAR , AUTOR_ID INT, CURSO_ID INT); INSERT INTO USUARIO(nome, email, senha) VALUES('Aluno', 'aluno@email.com', '123456');