(TCC)Problemas com Unknown Id.generator do hibernate e dúvida sobre PK

5 respostas
S

Estou no TCC e estou preocupado pois n estou conseguindo resolver esse problema. Eu crie uma classe Pessoa que é pai de outras duas, tem ID e possui sequence, mas qunado tento rodar aplicação e tento logar na tela de login já explode esse erro:

SEVERE: Servlet.service() for servlet LoginServlet threw exception
org.hibernate.AnnotationException: Unknown Id.generator: seq_pessoa
	at org.hibernate.cfg.BinderHelper.makeIdGenerator(BinderHelper.java:428)
	at org.hibernate.cfg.AnnotationBinder.bindId(AnnotationBinder.java:1901)
	at org.hibernate.cfg.AnnotationBinder.processElementAnnotations(AnnotationBinder.java:1279)
	at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:754)
	at org.hibernate.cfg.AnnotationConfiguration.processArtifactsOfType(AnnotationConfiguration.java:546)
	at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:291)
	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1319)
	at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:867)

Nem deixa entrar na aplicação, não o pq, esse é parte do código da classe Pessoa:

@Entity
@Table(name = "Pessoa") 
@Inheritance(strategy=InheritanceType.JOINED) 
@SequenceGenerator(name="seq_pessoa",sequenceName="seq_pessoa")
public class Pessoa
{
   
	@Id
	@GeneratedValue(generator="seq_pessoa",strategy = GenerationType.AUTO)
	private String idPessoa;
	private String rua;
    private String numero_imovel;
    private String cidade;
    private String estado;
    private String cep;
    private String telefone;
    private String celular;

o resto são o gets e sets e o método construtor, não possui mais nehuma anotação.

E esse é o script da tabela:

CREATE TABLE Pessoa (
  idPessoa INTEGER NOT NULL,
  rua VARCHAR(45) NOT NULL,
  numero_imovel VARCHAR(10) NOT NULL,
  cidade VARCHAR(20) NOT NULL,
  estado VARCHAR(20) NOT NULL,
  cep VARCHAR(10) NOT NULL,
  telefone VARCHAR(10) NOT NULL,
  celular VARCHAR(10) NOT NULL,
  PRIMARY KEY(idPessoa)
);
e do sequence:
CREATE SEQUENCE seq_pessoa
  INCREMENT 1
  MINVALUE 1
  MAXVALUE 9223372036854775807
  START 1
  CACHE 1;

Estou usando o Postgres, é preciso definir esse sequence no arquivo de configuração do hibernate tb?

E a outra dúvida foi quanto as classes que herdam de Pessoa, elas possuem seu próprio @Id masd i Hibernate de erro e sobre isso, mas elas são PKs na tabela, isso interfere em alguma coisa?

5 Respostas

F

Por que esta usando sequencia?

vc poderia criar sua PK com bigSerial, e anotar ela como IDENDITY

sem criar esse generator ai…

W

Acho que ta faltando coisa no seu codigo, da uma olhada nesse exemplo:

@Entity()
@Table(name="t_size")
@SequenceGenerator(name="seq_size", sequenceName="seq_size" ) 
public class Size implements java.io.Serializable {    

    private Long id;
    @Id(generate=GeneratorType.SEQUENCE, generator="seq_size")
    public Long getId() { return this.id; }
    public void setId(Long id) { this.id = id; }

Minha aposta eh
@Id(generate=GeneratorType.SEQUENCE, generator=“seq_size”)

Vc colocou somente
@Id

//Daniel

S

Tenho uma dúvida, todas as classes mapeadas precisam ser Serializable ?

W
G

Aqui eu uso assim:

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

Sempre funcionou, tanto com MySQL quanto PostgreSQL.

Criado 8 de novembro de 2010
Ultima resposta 9 de nov. de 2010
Respostas 5
Participantes 4