Estou tentando fazer uma API (não exatamente igual a do curso, mas seguindo o passo a passo) e usando o arquivo data.sql. Comecei a inserir os dados pelo id=1, mas quando tento fazer o put na API ele tenta gerar outro id=1 e aí dá erro, então alterei os valores de id do data.sql, aí funcionou. Mas pela vídeo aula parece que o spring identifica o último valor do banco de dados e acrescenta +1. Como faz isso? Eu esqueci alguma anotação?
Arquivo application.properties:
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.url=jdbc:h2:mem:banco
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.h2.console.enabled=true
spring.h2.console.path=/h2
spring.jpa.defer-datasource-initialization=true
Arquivo data.sql:
...
INSERT INTO pets(id, nome, raca, idade, data_cadastro) VALUES (100, 'miina', 'pinscher', 9, '2022-09-25 19:00:00')
INSERT INTO pets(id, nome, raca, idade, data_cadastro) VALUES (200, 'khadija', 'poodle', 2, '2022-09-25 19:00:00')
INSERT INTO tutores(id, nome, telefone1, data_cadastro) VALUES (100, 'maria', '0923940294', '2022-09-25 19:00:00')
INSERT INTO tutores(id, nome, telefone1, data_cadastro) VALUES (200, 'ana', '923840294', '2022-09-25 19:00:00')
Arquivo Pet.java (usando Lombok):
@Entity
@Table(name = "pets")
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Pet {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(length = 150, nullable = false)
private String nome;
...
//Construtor para PetCadastroForm
public Pet(String nome, String especie, String raca, Integer idade, String detalhe, Tutor tutor) {
this.nome = nome;
this.especie = especie;
this.raca = raca;
this.idade = idade;
this.detalhe = detalhe;
this.tutor = tutor;
}