Bom é o seguinte estou iniciando agora com o hibernate epara BD utilizo o PostgreSQL…
Fiz umas tabela para começar a aprender intão me deparei com o seguinte problema…
Tenho uma tabela Chamada Usuarios com os campos IDSequencial(Serial), Nome(Varchar) e Senha(Varchar)
Bom o problema está no IDSequencial que é serial que é do tipo auto-incremento no PostgrSQL e meu HBM esta nesse formato mas tenho quase certeza de que não esta certo
Aqui eu coloquei explicitamente o nome da sequence, mas se você omitir este nome, ele procura uma sequence hibernate_sequence para pegar o valor… (essa sequence vc tem que criar se não existir E SE for usar omitindo o nome da sequence)
Não sei se tem uma maneira de usar o serial direto, mas eu achei mais simples usar assim… :o)
Estou lendo o livro Hibernate In Action e recomendo…
Eu aconselho a vocês darem uma olhada em Hibernate com Annotations, na minha opnião é bem mais prática, pois nos livramos dos XML’s, as anotações são feitas diretamento no modelo (classe).
Com Annotations a classe ficaria da seguinte forma:
@Entity
// Nome que você deseja dar a tabela no banco
@Table(name="usuario")
//Cria a sequence
@SequenceGenerator(name = "seq_usuario", sequenceName = "seq_usuario")
public classe Usuario {
// Indica que este campo é a chave primária
@Id
//Indica que o campo é auto-incremento, e é gerado pela sequence "seq_usuario"
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "seq_usuario")
//nome que deseja que seja dado a coluna no banco
// caso não coloque esta anotação, é criado com o nome do atributo, neste caso "id"
@Column(name="id_usuario")
private int id;
@Column(name="txt_nome")
private String nome;
@Column(name="txt_senha")
private String senha;
//gets ans sets
}
Eu também ainda estou aprendendo Hibernate, então peguei um exemplo em XML, e estou passando para o Annotation.
Peguei a referencia do Annotation na página do Hibernate, e estou mandando ver.
Facil não posso dizer que está sendo, mas com a ajuda aqui do GUJ e do Guia de Referencia do próprio Hibernate to conseguindo evoluir.
To quebrando bastante a cabeça, mas aos poucos tá saindo. hehehe!
Estou tentando mapear um campo Serial do Postgres no Hibernate. Não ocorre nenhum erro, porém o campo fica zerado. Já tentei com e sem o @SequenceGenerator e o resultado é o mesmo.
Seguem os códigos:
Java:
@Entity
@Table(name = "notas")
@SuppressWarnings("serial")
@SequenceGenerator(name = "notas_not_id_seq", sequenceName = "notas_not_id_seq")
public class Nota implements Serializable {
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "notas_not_id_seq")
@Column(name = "not_id")
private int id;
...
SQL:
...
not_id serial NOT NULL
...
CREATE SEQUENCE notas_not_id_seq
INCREMENT 1
MINVALUE 1
MAXVALUE 9223372036854775807
START 1
CACHE 1;