Solucionado (ver solução)
Solucionado
(ver solução)
10
respostas

Estou com dúvidas no projeto MAVEN, com JPA, Hibernate e JSF abaixo...

Gostaria de saber qual a regra para fazer o mapeamento de herança de herança:

A <--- B <--- C

A recebe @Inheritance e B? Vejam o jeito que mapeei. É o melhor? Teriam alguma dica a me dar?

Quando tentei rodar este mesmo projeto no Ubuntu ele não rodou mais. Deu alguns problemas de compatibilidade (por exemplo não encontrando o log4j) e problema de conexão com banco de dados.

Segue anexo o erro. O Banco de Dados que estou usando, como se vê no persistence.xml é o postgres. Vocês poderiam passar um procedimento para eu sanar esse erro?

Segue link para o bitbucket do projeto.

https://bitbucket.org/_douglas/acme-jsf/src

PS: Sei que o git está muito porco, mas relevem isso. Eu não segui nenhuma boa prática nesse git. Fiz, meio contra minha vontade, um gohorse.

Abraço.

10 respostas

Oi Douglas,

Não entendi exatamente, você esta querendo reaproveitar os atributos de Pessoa apenas no java e no banco de dados, todas tabelas podem ter tais atributos repetidos para cada classe/tabela que herdar de Pessoa?

Ou você esta querendo também no banco de dados reaproveitar, tendo uma tabela Pessoa com relacionamentos com todas as outras?

Queria essa segunda opção!

Douglas, é possivel separar como quer, mas apenas com Herança não tenho certeza se é possivel realizar o relacionamento.

Ok. Que seria necessário? Algum material de referência?

Do jeito que está, eu garanto que roda?

Há como mapear usando xml? Usando xml substitui as anotations do JPA? Quais outras formas há de realizar o mapeamento? Tem algum material?

Teria exemplos?

Seria algo como...

ClasseBC | | | | A <--- B <--- C | | | | ClasseAB

Algo assim?

       ClasseBC
       |      |
A <--- B <--- C
|      |
ClasseAB

É possivel com xml, porém nunca utilizei, prefiro a filosofia de convenção sobre configuração, evito xml ao maximo.

Aquele mini livro do Hebert Coelho é uma ótima referencia, no qual te passei em seu ultimo post.

http://uaihebert.com/jpa-mini-livro-primeiros-passos-e-conceitos-detalhados/

Veja da pagina(ção) 19 até 22, cada uma fala sobre os diferentes tipos de relacionamentos e também possui exemplos de utilizações.

Olá Douglas! Eu não entendi bem o que você deseja. O problema do Ubuntu pode ser a porta que você pôs para conectar ao banco de dados, pois sua aplicação não estar usando a porta padrão do PostgreSQL. Repare que sua aplicação está rodando na porta 5433 e a porta padrão do PostgreSQL é 5432.

Quanto a herança não compreendi bem o que você deseja.

Quanto à herança já resolvi em partes. Fiz o mapeamento convencional por anotations. Mas consegui. :) O problema do Ubuntu ainda não resolvi. Mas acho que é questão de usuário que deve estar no grupo errado.

solução!

Douglas, no ubuntu, veja se é a porta errada que foi configurado no persistence.xml, como o Romário havia dito e também qual versão do PostgreSQL você esta utilizando no ubuntu?

Caso seja a ultima versão, 9.4.5 e também o java 8, tente utilizar o ultimo driver lançado

http://mvnrepository.com/artifact/org.postgresql/postgresql/9.4-1205-jdbc42

Verifique se essa linha não esta ajudando a causar o problema também

<property name="hibernate.connection.shutdown" value="true" />

E caso estiver utilizando a ultima versão do Hibernate e JPA, evite usar classes deprecated no persistence.xml, como por exemplo o provider e o dialect

<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<property name="hibernate.dialect"value="org.hibernate.dialect.PostgreSQL94Dialect" />

Não era a porta, mas as outras configurações ajudaram a resolver. Além disso tive que criar um usuário e colocá-lo no grupo correto do Linux.

Obrigado senhores.