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)
);
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?