Ajuda para gerer chave

Olá pessoal,
estou começando em java, e estou com um pequeno problema.
estou implementando código e nele tenho q gerar uma chave a partir do banco H2.
para isso utilizei o seguinte código.

                        int cintador = 0;
                        stm = conection.createStatement();
			ResultSet rs = stm.executeQuery("select matricula from funcionario order by matricula desc limit 1");
			rs.next();
                        contador = (rs.getInt("matricula")+1);
                        stm.execute( "INSERT INTO funcionario VALUES("+contador+", '" +funcionario.getNome()+"')");

Só que na hora da inserção do primeiro elemento no banco, sempre eh lançada uma exeção,pelo fator da chave não ser gerada.

Alguem pode me dizer se tem um jeito melhor para se fazer isso.

Obrigado

E simples: crie o campo como identity e deixa que o banco gerencie isso pra voce!