Inserir novo registro: DataProvider [RESOLVIDO]

Olá pessoal, estou com o seguinte problema:

Estou tentando inserir um novo registro no banco de dados. Para fazer isso, utilizo um DataProvider e vou setando os valores para os campos individualmente, assim:

provedor.setValue("codperiodo", this.codperiodo); provedor.setValue("codrefeicao", this.codrefeicao); provedor.setValue("dia", this.dia);

O problema é que essa tabela possui uma coluna, chamada “codigo”, por exemplo, que é do tipo SERIAL, ou seja, autoincrement.
Quando mando executar esse exemplo acima, o registro é inserido com sucesso, porém a coluna “codigo” fica com valor 0. O autoincrement não funcionou, não incrementou o valor.

Preciso saber como faço para que isso ocorra, e quando efetuar um insert pelo DataProvider, a coluna autoincrement, funcione corretamente.

[]'s

para campo serial você tem que fazer da seguinte forma:

@Id @GeneratedValue(generator="sequencia_do_seu_id",strategy = GenerationType.SEQUENCE) @Basic(optional = false) @Column(name = "id") private Integer id;
colocando o @GeneratedValue resolve o seu problema

Finalmente uma luz no fim do tunel!!! :smiley:

E onde coloco esse código?!

pelo vc não está utilizando uma unidade de persistencia?? caso não esteja poste o código do seu proverdor??
para eu ver como utilizar.

Quando tenho que inserir algum registro no banco, faço assim:

RowKey rk = cidadeDataProvider.appendRow(); cidadeDataProvider.setCursorRow(rk); cidadeDataProvider.setValue("nome", this.nome); cidadeDataProvider.setValue("uf", this.uf); cidadeDataProvider.commitChanges(); cidadeDataProvider.refresh();
Só que dessa maneira, não consigo fazer com que o campo “codcidade” receba o próximo valor (já que é um campo serial, ou seja, auto-increment).
O que devo inserir na coluna “codcidade” para que receba o próximo valor do auto-increment?!

Obrigado pela ajuda!!! :slight_smile:
Aguardo…

Ninguém?!

poste o seu código da classe “cidadeDataProvider”, para resolver o seu problema preciso do código desta frase e não da que você postou.

Olá!

Para resolver esse problema (não sei se existe uma forma mais fácil… Mas deve existir… :D) a única maneira que encontrei foi executar um SELECT NEXTVAL na sequência do código, que era serial e daí pegar esse valor…

Mas já fiz os testes como o joede.fadel disse e funciona blza! Pena que eu não podia utilizar JPA no meu projeto…

Obrigado galera!