| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/07/2007 15:37:49
|
Matheus Tardivo
JavaChild
Membro desde: 27/03/2006 09:43:20
Mensagens: 134
Localização: São Paulo - SP
Offline
|
Boa tarde pessoal.
Estou trabalhando em um projeto onde usamos Struts 2 + Spring 2 com JPA (Hibernate). Estamos usando o SQL Server como banco de dados.
Agora, acabou de surgir um novo requisito no projeto, que algumas entidades não estão no SQL Server, mas num banco de dados a parte, rodando no PostgreSQL.
Um pouco de código para explicar melhor:
applicationContext.xml
Meu Dao genérico:
Com essa configuração, tudo funciona perfeitamente. Agora preciso, de alguma forma, manipular entidades do DataSource do PostgreSQL (veja o bean id dataSourcePgSQL do applicationContext.xml acima).
A documentação do Spring não ajudou muito neste caso e, pelo que andei lendo no fórum do Spring, outras pessoas também não encontraram uma solução.
Alguém já teve que fazer alguma coisa parecida e tem alguma dica para ajudar?
Valeu.
[edit]
Tópico complementar no fórum do Spring: http://forum.springframework.org/showthread.php?t=41211
[/edit]
|
Matheus Tardivo
http://tardivo.org |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/07/2007 10:09:33
|
urubatan
Moderador
![[Avatar]](/images/avatar/fe9fc289c3ff0af142b6d3bead98a923.jpg)
Membro desde: 21/09/2002 10:31:26
Mensagens: 2481
Localização: Porto Alegre/RS
Offline
|
o problema é o seguinte, tu tem que fazer exatamente como esta na documentação ...
outra coisa, com mais de uma persistence unit definida no projeto, quando tu anota alguma coisa com @PersistenceContext tu tem que passar o parametro name para dizer qual persistence unit tu quer utilizar naquele momento.
e em qualquer um dos persistence*.xml tu não pode repetir o nome de uma persistence-unit tem que criar uma persistence unit para cada banco.
|
[]'s
Rodrigo Urubatan
http://www.urubatan.com.br
Melhor livro de RoR do brasil: http://livro.urubatan.com.br
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/07/2007 10:11:32
|
urubatan
Moderador
![[Avatar]](/images/avatar/fe9fc289c3ff0af142b6d3bead98a923.jpg)
Membro desde: 21/09/2002 10:31:26
Mensagens: 2481
Localização: Porto Alegre/RS
Offline
|
ahh, mais uma coisa, se tu quer acessar as entidades a partir da mesma persistence unit, ai acho que não vai rolar não ...
a unica pouco provavel solução seria o hibernate-shards
|
[]'s
Rodrigo Urubatan
http://www.urubatan.com.br
Melhor livro de RoR do brasil: http://livro.urubatan.com.br
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/07/2007 17:26:19
|
Matheus Tardivo
JavaChild
Membro desde: 27/03/2006 09:43:20
Mensagens: 134
Localização: São Paulo - SP
Offline
|
Seguindo a documentação, minha configuração ficou assim (agora considerando um banco de dados MySQL e outro PostgreSQL):
applicationContext.xml:
persistence-mysql.xml
persistence-pgsql.xml
UserDao.java:
MapaDao.java:
PersistenceUnitsTest.java:
Quando executo o teste acima, ocorre o seguinte erro:
Ou seja, banco1 pertence ao datasource do MySQL, mas tento recuperar as entidades Mapa do MapaDao, que está com a anotação @PersistenceContext(name = "puPgSQL") que pertence ao PostgreSQL.
Aparentemente, ou está sendo usado o datasource errado ou então a persistence unit errada.
Se eu mudar a propriedade persistenceUnitName do bean entityManagerFactory para puPgSQL (que é do PostgreSQL, onde está a tabela Mapa) ai o erro acontece no outro Dao, o UserDao.
Por isso, acredito que o problema seja relativo a persistence unit errada. Funciona apenas o Dao que está com a anotação da persistence unit que está configurado no bean entityManagerFactory.
Se eu simplesmente tentar remover essa propriedade do entityManagerFactory, volto para o erro inicial:
Desculpe por colocar uma quantidade exagerada de código, mas achei legal para ter uma visão geral do que estou tentando fazer.
Valeu.
|
Matheus Tardivo
http://tardivo.org |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/12/2009 10:46:41
|
ceara
Debugger
![[Avatar]](/images/avatar/609e9d4bcc8157c00808993f612f1acd.jpeg)
Membro desde: 27/05/2005 10:02:01
Mensagens: 60
Localização: Campinas
Offline
|
Amigo, eu consegui fazer o que você está tentando de outra forma.
Eu estava seguindo essa linha quando me indicaram essa documentação: http://static.springsource.org/spring/docs/2.5.x/reference/orm.html#orm-jpa-multiple-pu
Está implementado e funcionando aqui!
Só lembrando que na hora que você for utilizar sua anotação: PersistenceContext coloque o nome de seu datasource (key)
Boa sorte, se precisar de ajuda posta aíh!
Ou se sua solução funcionou poste aíh tbm!
abraço
http://rafacastanho.wordpress.com
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/03/2010 01:29:10
|
Mrwin
JavaChild
![[Avatar]](/images/avatar/18064d61b6f93dab8681a460779b8429.png)
Membro desde: 28/06/2006 14:28:10
Mensagens: 102
Localização: Recife - PE
Offline
|
Ceara! como você conseguiu? estou com os mesmos erros do amigo acima!
|
Todas as coisas cooperam para o bem daqueles que amam a Deus. |
|
|
 |
|
|