Boa noite!
Criei uma tabela, estou utilizando o sql server, ao tentar fazer post, retorna (isonnomia):
{
"timestamp": "2023-11-23T00:34:31.345+00:00",
"status": 500,
"error": "Internal Server Error",
"trace": "org.hibernate.AssertionFailure: null identifier (com.somonitores.sistemaOs.clientes.ClientesEntidade)\r\n\tat org.hibernate.engine.spi.EntityKey.<init>(EntityKey.java:50)\r\n\tat org.hibernate.internal.AbstractSharedSessionContract.generateEntityKey(AbstractSharedSessionContract.java:618)\r\n\tat
segue o arquivo db.migrition sql:
create table clientes2 (
id bigint not null auto_increment,
nomefantasia varchar(100) not null,
razaosocial varchar(100) not null,
tipo varchar(100) not null,
cpfcnpj varchar(100) not null,
contato varchar(100) not null,
ruanum varchar(100) not null,
num varchar(100) not null,
bairro varchar(100) not null,
cidade varchar(100) not null,
cep varchar(100) not null,
fonefixo varchar(100) not null,
fone varchar(100) not null,
celular2 varchar(100) not null,
email varchar(100) not null,
segmento varchar(100) not null,
inscestadual varchar(100) not null,
primary key(id)
);
classe controller:
// =========================cabeçalho========================
@RestController
@RequestMapping("/clientes")
public class ClientesController {
// declara como atributo da classe controller
@Autowired // injeção de dependencia
private ClientesRepository repository; // é por aqui que chegara o retorno do BD
//===========================METODO POST==============================
@PostMapping // insere dados no banco de dados
@Transactional // toda vez que modificar o banco de dados precisa usar
// o @RequestBody é para pegar os dados do corpo da requisição
// o @Valid é para validar os dados do cadastro
public ResponseEntity cadastrar (@RequestBody @Valid ClientesDados dados, UriComponentsBuilder uriBuilder){
var clientesUri = new ClientesEntidade(dados);
repository.save(clientesUri);
var uri = uriBuilder.path( "/clientes/{id}").buildAndExpand( clientesUri.getId()).toUri();
return ResponseEntity.created(uri).body(dados);
}
classe entidade:
@Table(name = "clientes6")
@Entity(name = "ClientesEntidade")
@Getter //gera os médotos getters
@NoArgsConstructor // gerar os contrutores sen arguementos
@AllArgsConstructor //para ter um construtor que recebe todos os campos
@EqualsAndHashCode(of = "id") // gera os equals e os hadcods
public class ClientesEntidade {
// colunas da tabela
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
//@GeneratedValue(strategy = GenerationType.IDENTITY)
//@Column(columnDefinition = "BIGINT DEFAULT 8912", nullable = false, insertable = false, updatable = false)
private Long id;
private String nomefantasia;
private String razaosocial;
private String tipo;
private String cpfcnpj;
private String contato;
private String ruanum;
private String num;
private String bairro;
private String cidade;
private String cep;
private String fonefixo;
private String fone;
private String celular2;
private String email;
private String segmento;
private String inscestadual;
// construtor
public ClientesEntidade(ClientesDados dados) {
this.nomefantasia = dados.nomefantasia();
this.razaosocial = dados.razaosocial();
this.tipo = dados.tipo();
this.cpfcnpj = dados.cpfcnpj();
this.contato = dados.contato();
this.ruanum = dados.ruanum();
this.num = dados.num();
this.bairro = dados.bairro();
this.cidade = dados.cidade();
this.cep = dados.cep();
this.fonefixo = dados.fonefixo();
this.fone = dados.fone();
this.celular2 = dados.celular2();
this.email = dados.email();
this.segmento = dados.segmento();
this.inscestadual = dados.inscestadual();
}
Dados do post:
{
"nomefantasia": "ANGELICA APARECIDA RIBEIRO SOUZA", "razaosocial": "SUPER ABC", "tipo": "J", "cpfcnpj": "03439028690", "contato": "BIRA", "ruanum": "RUA ITAPECERICA", "num": "400", "bairro": "CENTRO", "cidade": "ABAETE", "cep": "35500-520", "fonefixo": "37-3212-6708", "fone": "37-9-9999-8888", "celular2": "37-9-7777-6666", "email": "eu@uol.com.br", "segmento": "alimentos", "inscestadual": "99996666555544433322" }