defalut schema postgresql glassfish netbeans JPA

Java

27/12/2011

Boa noite!
É o seguinte, eu desenvolvia aplicações web utilizando o eclipse, tomcat como servidor, para banco de dados usava postgresql e para mapeamento eu utilizava Hibernate puro(sem JPA) e fazia todo o mapeamento através de arquivos xml. Agora estou fazendo os cursos de videoaulas, exemplos, etc., aqui do Devmedia utilizando Netbeans IDE, servidor glassfish, para mapeamento estou utilizando JPA2(Eclipselink) assim como nos exemplos, a única diferença é que continuo utilizando postgresql, ao invés do derby.
Os exemplos que eu faço funcionam normalmente, as tabelas são geradas no banco de dados, porém elas são geradas no schema public e não no schema que eu quero. Quando eu utilizava Hibernate puro, eu colocava no hibernate.cfg.xml a propriedade <property name=hibernate.default_schema>ecommerce</property>, e ele passava a utilizar o schema indicado. Agora utilizando JPA(Eclipselink) e glassfish não sei como faço. No persistence.xml só existe uma propriedade, que é <property name=eclipselink.ddl-generation value=create-tables/>. No glassfish-resources.xml que é onde tem as propriedades de configuração parecidas com as do hibernate.cfg.xml, tentei colocar alguns nomes de propriedades parecidos com o default_schema do hibernate.cfg.xml, coloquei defaultSchema, Schema, mas nada funcionou, e o programa continua criando as tabelas no schema public.

Alguém aí sabe como escolho o esquema default ou padrão utilizando postgresql, JPA2(Eclipselink), glassfish e netbeans?
Robson Silva

Robson Silva

Curtidas 0

Respostas

Robson Teixeira

Robson Teixeira

27/12/2011

Sugiro você pesquisar sobre as propriedades de configuração do eclipseLink para poder escolher o esquema do banco na qual você deseja trabalhar.Segue alguns links uteis

http://www.eclipse.org/eclipselink/

http://www.vogella.de/articles/JavaPersistenceAPI/article.html

http://www.guj.com.br/java/115493-jpa-implementations-comparison-hibernate-toplink-essentials-openjpa-eclipselink

http://refcardz.dzone.com/refcardz/eclipselink-jpa

a priore sugiro o primeiro link pois é a fonte de onde surgiu esse FrammeWork.

espero ter ajudado
att
robson
GOSTEI 0
Davi Costa

Davi Costa

27/12/2011

Se vc estiver suando annotations pode usar nas tabelas:

@Table(schema=seuSchema)

Vc pode dar um a olhada aki tb:
http://wiki.eclipse.org/Using_EclipseLink_JPA_Extensions_%28ELUG%29

at Davi
GOSTEI 0
Robson Silva

Robson Silva

27/12/2011

Se vc estiver suando annotations pode usar nas tabelas:

@Table(schema=seuSchema)

Vc pode dar um a olhada aki tb:
http://wiki.eclipse.org/Using_EclipseLink_JPA_Extensions_%28ELUG%29

at Davi


A anotação

@Table(schema=meuSchema)

Deu certo para as minhas entidades, porém para as classes ENUM ele continua criando as tabelas no schema public.

Creio que essa propriedade que eu estou procurando não deve ser do eclipselink, uma vez que não tem nenhum arquivo relacionado ao eclipselink, creio que deva ser uma propriedade que deva ser inserida no persistence.xml ou no glassfish-resources.xml, uma vez q mesmo quando eu uso JPA2(hibernate) a aplicação não usa o hibernate.cfg.xml como acontece quando se usa o hibernate puro. Então tem q ser alguma coisa mais relacionada ao JPA ou glassfish, consultando a documentação do eclipslink não achei nada relacionado.
GOSTEI 0
Robson Silva

Robson Silva

27/12/2011

Descobri que deve-se criar um arquivo orm.xml e nele colocar

<schema>MeuEsquema</schema>

e no persistence.xml colocar

<mapping-file>orm.xml</mapping-file>

fiz isso, só que quando vou executar aparece o seguinte erro

Exception [EclipseLink-7253] (Eclipse Persistence Services - 2.3.0.v20110604-r9504): org.eclipse.persistence.exceptions.ValidationException
Exception Description: There is no mapping file called [orm.xml] in classpath for persistence unit named [SisContrAm-ejbPU].

já coloquei esse arquivo orm.xml em todo lugar, e mesmo assim não funciona. Alguém sabe como resolver?
GOSTEI 0
Robson Silva

Robson Silva

27/12/2011

Descobri que deve-se criar um arquivo orm.xml e nele colocar

<schema>MeuEsquema</schema>

e no persistence.xml colocar

<mapping-file>orm.xml</mapping-file>

fiz isso, só que quando vou executar aparece o seguinte erro

Exception [EclipseLink-7253] (Eclipse Persistence Services - 2.3.0.v20110604-r9504): org.eclipse.persistence.exceptions.ValidationException
Exception Description: There is no mapping file called [orm.xml] in classpath for persistence unit named [SisContrAm-ejbPU].

já coloquei esse arquivo orm.xml em todo lugar, e mesmo assim não funciona. Alguém sabe como resolver?


Consegui fazer funcionar, simplesmente tirei a linha

<mapping-file>orm.xml</mapping-file>

e funcionou perfeitamente!
GOSTEI 0
Davi Costa

Davi Costa

27/12/2011

Show de bola Robson, muito boa a sua iniciativa de postar sua solução! Assim que possível, favor fechar o chamado.

att Davi
GOSTEI 0
Robson Silva

Robson Silva

27/12/2011

Show de bola Robson, muito boa a sua iniciativa de postar sua solução! Assim que possível, favor fechar o chamado.

att Davi


Como faço pra fechar?
GOSTEI 0
Davi Costa

Davi Costa

27/12/2011

Senão me engano tem uma opção na parte de cima do chamado.

att Davi
GOSTEI 0
Dyego Carmo

Dyego Carmo

27/12/2011

Muito bom !

Problema resolvido ? Poderia fechar o chamado ?

Obrigadao !!!
GOSTEI 0
Robson Silva

Robson Silva

27/12/2011

Até agora não consegui descobrir como fecha o chamado
GOSTEI 0
Davi Costa

Davi Costa

27/12/2011

Achei isso em um outro post:
...quando alguem responde o seu chamado, uma janela é aberta e pergunta se a resposta dada resolveu o problema. quando vc responder sim, o chamado é fechado.

att Davi
GOSTEI 0
Robson Silva

Robson Silva

27/12/2011

Pra mim nunca apareceu essa janela
GOSTEI 0
POSTAR