Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Dúvida referente ao autoIncrement

Buenas,estava fazendo umas brincadeiras e me deparei com uma dúvida,sabendo que utilizando ,meu codigo erá para auto incrementar ,se eu for imprimir no banco blz ta fazendo essa função ,entretanto quando eu vou usar o delete eu preciso settar o id pra fazer a operação mas se meu banco está auto incrementando por que preciso fazer isso ?

@Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

Como queria utilizar o Delete

public static void main(String[] args) {
        Categoria cat2 = new Categoria("Viajem", "nao to afim de escrever hehe");
        CategoriaRN catRN = new CategoriaRN();
        catRN.deletar(cat2.getId());


}

ERRO:

Exception in thread "main" java.lang.IllegalArgumentException: id to load is required for loading
    at org.hibernate.event.spi.LoadEvent.<init>(LoadEvent.java:93)
    at org.hibernate.event.spi.LoadEvent.<init>(LoadEvent.java:63)
    at org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.doLoad(SessionImpl.java:2800)
    at org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.load(SessionImpl.java:2777)
    at org.hibernate.internal.SessionImpl.find(SessionImpl.java:3406)
    at org.hibernate.internal.SessionImpl.find(SessionImpl.java:3370)
    at sistemavendas.rn.CategoriaRN.deletar(CategoriaRN.java:60)
    at sistemavendas.TesteCategoria.main(TesteCategoria.java:11)

Como tenho que utilizar para o comando funcionar :

public static void main(String[] args) {
        Categoria cat2 = new Categoria("Viajem", "nao to afim de escrever hehe");
        CategoriaRN catRN = new CategoriaRN();

        cat2.setId(1);
        catRN.deletar(cat2.getId());


}

Desde já grato a atenção,boa tarde

1 resposta
solução!

Oi Felipe,

O auto-increment serve para o banco de dados gerar os ids dos registros automaticamente, sem que você tenha que setar manualmente no código. Mas isso é apenas na hora de salvar o registro.

Para deletar o registro você precisa setar o id, pois o banco de dados precisa saber qual dos registros é para excluir, sendo que ele se baseia no id. Se você passou um objeto com id = 3, então ele vai procurar no banco de dados o registro que tem esse id, pra então deletá-lo.

Sem o id o banco de dados não tem como saber qual dos registros você quer excluir.

Faz sentido?

Bons estudos!