Problema ao utilizar 2 banco de dados ao mesmo tempo.
Bom dia pessoal, estou com um probleminha aqui. Tentei rodar uma aplicação que eu estou fazendo, porém está dando um erro. E eu acho que seja em um dos relacionamentos.
O erro que da é o seguinte:
view plaincopy to clipboardprint?
javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not load an entity: [entity.Viagem#2]
at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:614)
at org.hibernate.ejb.AbstractEntityManagerImpl.find(AbstractEntityManagerImpl.java:202)
at br.gov.ce.srh.siscontv.util.JPAUtil.getEntity(JPAUtil.java:62)
at br.gov.ce.srh.siscontv.model.DAO.ViagemDAO.buscarViagem(ViagemDAO.java:17)
at teste.ViagemDAOTeste.testbuscarViagem(ViagemDAOTeste.java:58)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:73)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:46)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:180)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:41)
at org.junit.runners.ParentRunner$1.evaluate(ParentRunner.java:173)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
at org.junit.runners.ParentRunner.run(ParentRunner.java:220)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:46)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: org.hibernate.exception.SQLGrammarException: could not load an entity: [entity.Viagem#2]
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:90)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
at org.hibernate.loader.Loader.loadEntity(Loader.java:1899)
at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:71)
at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:65)
at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3062)
at org.hibernate.event.def.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:434)
at org.hibernate.event.def.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:415)
at org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:165)
at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:223)
at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:126)
at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:906)
at org.hibernate.impl.SessionImpl.get(SessionImpl.java:843)
at org.hibernate.impl.SessionImpl.get(SessionImpl.java:836)
at org.hibernate.ejb.AbstractEntityManagerImpl.find(AbstractEntityManagerImpl.java:182)
... 27 more
Caused by: org.postgresql.util.PSQLException: ERRO: erro de sintaxe em ou próximo a "["
Posição: 1616
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2062)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1795)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:479)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:367)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:271)
at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:208)
at org.hibernate.loader.Loader.getResultSet(Loader.java:1812)
at org.hibernate.loader.Loader.doQuery(Loader.java:697)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:259)
at org.hibernate.loader.Loader.loadEntity(Loader.java:1885)
... 39 more
s
Eu estou tentando fazer um teste com o JUnitTest.
Aqui está o sql que ele gera para dar o erro acima:
view plaincopy to clipboardprint?
Hibernate:
select
viagem0_.pktbsisc_viagem as pktbsisc1_4_4_,
viagem0_.dt_periodofinal as dt2_4_4_,
viagem0_.dt_periodoinicial as dt3_4_4_,
viagem0_.pktbsisc_cod_estado as pktbsisc15_4_4_,
viagem0_.in_interno as in4_4_4_,
viagem0_.ds_cidade as ds5_4_4_,
viagem0_.ds_pessoa as ds6_4_4_,
viagem0_.ds_objetivo as ds7_4_4_,
viagem0_.in_ajudacusto as in8_4_4_,
viagem0_.in_diaria as in9_4_4_,
viagem0_.in_passagem as in10_4_4_,
viagem0_.in_coletiva as in11_4_4_,
viagem0_.vl_ajudacusto as vl12_4_4_,
viagem0_.vl_diaria as vl13_4_4_,
viagem0_.vl_passagens as vl14_4_4_,
estado1_.pktbsisc_cod_estado as pktbsisc1_3_0_,
estado1_.ds_estado as ds2_3_0_,
estado1_.pktbsisc_cod_pais as pktbsisc3_3_0_,
pais2_.pktbsisc_cod_pais as pktbsisc1_8_1_,
pais2_.ds_pais as ds2_8_1_,
solicitaca3_.pktbsisc_solicitacao as pktbsisc1_2_2_,
solicitaca3_.dt_solicitacao as dt2_2_2_,
solicitaca3_.ds_justificativa as ds3_2_2_,
solicitaca3_.in_status as in4_2_2_,
solicitaca3_.in_relatorioviagem as in5_2_2_,
solicitaca3_.pktbsisc_usuario as pktbsisc6_2_2_,
solicitaca3_.pktbsisc_viagem as pktbsisc7_2_2_,
usuario4_.Ds_Login as Ds1_6_3_,
usuario4_.NOME as NOME6_3_,
usuario4_.MATRÍCULA as MATRÍCULA6_3_,
usuario4_."UNIDADE DE EXERCÍCIO" as UNIDADE4_6_3_,
usuario4_.tipo_usuario as tipo5_6_3_
from
teste.tbsisc_viagem viagem0_
left outer join
teste.tbsisc_estado estado1_
on viagem0_.pktbsisc_cod_estado=estado1_.pktbsisc_cod_estado
left outer join
teste.tbsisc_pais pais2_
on estado1_.pktbsisc_cod_pais=pais2_.pktbsisc_cod_pais
left outer join
teste.tbsisc_solicitacao solicitaca3_
on viagem0_.pktbsisc_viagem=solicitaca3_.pktbsisc_viagem
left outer join
[DADOS DO SERVIDOR] usuario4_
on solicitaca3_.pktbsisc_usuario=usuario4_.Ds_Login
where
viagem0_.pktbsisc_viagem=?
A minha dúvida é,
tenho 2 relacionamentos abaixo, tem algo de errado neles?
view plaincopy to clipboardprint?
class Usuario
@ManyToMany(targetEntity=Grupo.class,mappedBy="listaUsuarios")
@JoinTable(name="tbsisc_usuario_grupo")
private List listGrupos;
@OneToMany(mappedBy="usuario")
private List listaSolicitacao = new LinkedList();
view plaincopy to clipboardprint?
class Solicitacao
@ManyToOne
@JoinColumn(name="pktbsisc_usuario")
private Usuario usuario;
view plaincopy to clipboardprint?
class Grupo
@ManyToMany(targetEntity = Usuario.class)
@JoinTable(name = "tbsisc_usuario_grupo", joinColumns = @JoinColumn(name = "id_usuario"), inverseJoinColumns = @JoinColumn(name = "id_grupo"))
private List listaUsuarios = new LinkedList();
Quero explicar que tenho 3 bancos: "bancoLocal" , "BDSERV" , "BDINTR".
[DADOS DO SERVIDOR] é uma tabela de um banco. Esqueci de comentar um seguinte problema,
eu estou tentando acessar 2 bancos de dados ao mesmo tempo, pois eu preciso dos dados dos 2. Eu só não entendi pq ele tenta dar um lefjoin no dados do servidor, pois é de outro banco.
A classe Usuario é entidade do banco "BDSERV" que contém a tabela [DADOS DO SERVIDOR] e as demais é de outro banco, "bancoLocal", que contém as demais tabelas, viagem, grupo, etc ...
Aqui está meu persiste.xml
view plaincopy to clipboardprint?
org.hibernate.ejb.HibernatePersistence
entity.Grupo
entity.AndamentoSolicitacao
entity.Solicitacao
entity.Estado
entity.Viagem
org.hibernate.ejb.HibernatePersistence
entity.Usuario
org.hibernate.ejb.HibernatePersistence
entity.Setor
Euclides Filizola
Curtidas 0
Respostas
Henrique Weissmann
21/09/2009
Euclides, verifique isto:
se você está trabalhando com dois bancos de dados distintos, ao definir qual a tabela do banco de dados, preceda seu nome pelo nome do banco de dados, tal como na sintaxe abaixo:
[nome do banco de dados].[nome da tabela].
Neste caso, sugiro inclusive que você faça isto para todas as suas classes de entidade para evitar problemas.
É o que costumo fazer no Hibernate para casos como estes.
se você está trabalhando com dois bancos de dados distintos, ao definir qual a tabela do banco de dados, preceda seu nome pelo nome do banco de dados, tal como na sintaxe abaixo:
[nome do banco de dados].[nome da tabela].
Neste caso, sugiro inclusive que você faça isto para todas as suas classes de entidade para evitar problemas.
É o que costumo fazer no Hibernate para casos como estes.
GOSTEI 0
Euclides Filizola
21/09/2009
Fala Henrique beleza ? Mano, mas eu não estou utilizando o Hibernate, apenas o JPA. e implemento o Hibernate. É a mesma coisa ?
GOSTEI 0
Henrique Weissmann
21/09/2009
Mesmíssima história.
Lembre-se: o JPA é apenas uma camada colocada acima do Hibernate para que um dia, caso você queira mudar o seu motor de persistência (por exemplo, passar de Hibernate para TopLink).
Lembre-se: o JPA é apenas uma camada colocada acima do Hibernate para que um dia, caso você queira mudar o seu motor de persistência (por exemplo, passar de Hibernate para TopLink).
GOSTEI 0
Euclides Filizola
21/09/2009
Você está dizendo fazer isso ?
@Entity
@Table(name="SISCONTV.teste.tbsisc_solicitacao")
public class Solicitacao implements Serializable {
... ?
ao invés de:
@Entity
@Table(name="teste.tbsisc_solicitacao")
public class Solicitacao implements Serializable {
... ?
GOSTEI 0
Henrique Weissmann
21/09/2009
Se SISCONTV for o nome do banco de dados, é exatamente isto.
GOSTEI 0
Euclides Filizola
21/09/2009
Acabei de fazer as mudanças, continua o mesmo erro.
javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not load an entity: [entity.Viagem#2]
at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:614)
at org.hibernate.ejb.AbstractEntityManagerImpl.find(AbstractEntityManagerImpl.java:202)
at br.gov.ce.srh.siscontv.util.JPAUtil.getEntity(JPAUtil.java:62)
at br.gov.ce.srh.siscontv.model.DAO.ViagemDAO.buscarViagem(ViagemDAO.java:17)
at teste.ViagemDAOTeste.testbuscarViagem(ViagemDAOTeste.java:58)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:73)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:46)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:180)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:41)
at org.junit.runners.ParentRunner$1.evaluate(ParentRunner.java:173)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
at org.junit.runners.ParentRunner.run(ParentRunner.java:220)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:46)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: org.hibernate.exception.SQLGrammarException: could not load an entity: [entity.Viagem#2]
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:90)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
at org.hibernate.loader.Loader.loadEntity(Loader.java:1899)
at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:71)
at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:65)
at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3062)
at org.hibernate.event.def.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:434)
at org.hibernate.event.def.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:415)
at org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:165)
at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:223)
at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:126)
at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:906)
at org.hibernate.impl.SessionImpl.get(SessionImpl.java:843)
at org.hibernate.impl.SessionImpl.get(SessionImpl.java:836)
at org.hibernate.ejb.AbstractEntityManagerImpl.find(AbstractEntityManagerImpl.java:182)
... 27 more
Caused by: org.postgresql.util.PSQLException: ERRO: erro de sintaxe em ou próximo a "["
Posição: 1659
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2062)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1795)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:479)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:367)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:271)
at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:208)
at org.hibernate.loader.Loader.getResultSet(Loader.java:1812)
at org.hibernate.loader.Loader.doQuery(Loader.java:697)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:259)
at org.hibernate.loader.Loader.loadEntity(Loader.java:1885)
... 39 more
....
esse erro pelo que eu vi, ele tenta fazer um join com o outro banco.
Aqui está o sql que o hibernate gera:
select
viagem0_.pktbsisc_viagem as pktbsisc1_4_4_,
viagem0_.dt_periodofinal as dt2_4_4_,
viagem0_.dt_periodoinicial as dt3_4_4_,
viagem0_.pktbsisc_cod_estado as pktbsisc15_4_4_,
viagem0_.in_interno as in4_4_4_,
viagem0_.ds_cidade as ds5_4_4_,
viagem0_.ds_pessoa as ds6_4_4_,
viagem0_.ds_objetivo as ds7_4_4_,
viagem0_.in_ajudacusto as in8_4_4_,
viagem0_.in_diaria as in9_4_4_,
viagem0_.in_passagem as in10_4_4_,
viagem0_.in_coletiva as in11_4_4_,
viagem0_.vl_ajudacusto as vl12_4_4_,
viagem0_.vl_diaria as vl13_4_4_,
viagem0_.vl_passagens as vl14_4_4_,
estado1_.pktbsisc_cod_estado as pktbsisc1_3_0_,
estado1_.ds_estado as ds2_3_0_,
estado1_.pktbsisc_cod_pais as pktbsisc3_3_0_,
pais2_.pktbsisc_cod_pais as pktbsisc1_8_1_,
pais2_.ds_pais as ds2_8_1_,
solicitaca3_.pktbsisc_solicitacao as pktbsisc1_2_2_,
solicitaca3_.dt_solicitacao as dt2_2_2_,
solicitaca3_.ds_justificativa as ds3_2_2_,
solicitaca3_.in_status as in4_2_2_,
solicitaca3_.in_relatorioviagem as in5_2_2_,
solicitaca3_.pktbsisc_usuario as pktbsisc6_2_2_,
solicitaca3_.pktbsisc_viagem as pktbsisc7_2_2_,
usuario4_.Ds_Login as Ds1_6_3_,
usuario4_.NOME as NOME6_3_,
usuario4_.MATRÍCULA as MATRÍCULA6_3_,
usuario4_."UNIDADE DE EXERCÍCIO" as UNIDADE4_6_3_,
usuario4_.tipo_usuario as tipo5_6_3_
from
SISCONTV.teste.tbsisc_viagem viagem0_
left outer join
SISCONTV.teste.tbsisc_estado estado1_
on viagem0_.pktbsisc_cod_estado=estado1_.pktbsisc_cod_estado
left outer join
SISCONTV.teste.tbsisc_pais pais2_
on estado1_.pktbsisc_cod_pais=pais2_.pktbsisc_cod_pais
left outer join
SISCONTV.teste.tbsisc_solicitacao solicitaca3_
on viagem0_.pktbsisc_viagem=solicitaca3_.pktbsisc_viagem
left outer join
bdserv.[DADOS DO SERVIDOR] usuario4_
on solicitaca3_.pktbsisc_usuario=usuario4_.Ds_Login
where
viagem0_.pktbsisc_viagem=?
...........
Mas não sei como ele vai acessar o "bdserv.[DADOS DO SERVIDOR]", já que as duas tabelas estão em bancos diferentes...
é isso que ta me trazendo problemas...
.....
GOSTEI 0
Henrique Weissmann
21/09/2009
Os dois bancos de dados estão no mesmo servidor?
Sugestão: execute este SQL no seu próprio banco de dados e veja se vai dar algum erro.
Caso execute normalmente, pode ser que o problema não seja este, mas sim outro.
Verifique também se você está mapeando a sua entidade corretamente no arquivo de configuração do JPA.
Sugestão: execute este SQL no seu próprio banco de dados e veja se vai dar algum erro.
Caso execute normalmente, pode ser que o problema não seja este, mas sim outro.
Verifique também se você está mapeando a sua entidade corretamente no arquivo de configuração do JPA.
GOSTEI 0
Euclides Filizola
21/09/2009
Não, os dois bancos não estão no mesmo servidor. Um deles está em localhost, e o outro está fora.
Aqui está meu persistence.xml
org.hibernate.ejb.HibernatePersistence
entity.Grupo
entity.AndamentoSolicitacao
entity.Solicitacao
entity.Estado
entity.Viagem
org.hibernate.ejb.HibernatePersistence
entity.Usuario
org.hibernate.ejb.HibernatePersistence
entity.Setor
........
GOSTEI 0
Henrique Weissmann
21/09/2009
Então este é o seu problema.
Uma das limitações do JPA (e Hibernate) é justamente esta. Ou todas as entidades estão no mesmo servidor ou não. Caso não estejam, normalmente ele não irá conseguir fazer o mapeamento.
Imagine-se executando esta consulta no seu servidor. Fazendo o join de tabelas presentes neste servidor com tabelas presentes em outra. Como são instâncias distintas, armazenadas em locais completamente distintos, a consulta irá lhe retornar um erro, informando ou que um dos bancos de dados não existe ou que não há registros referentes em um dos lados do join.
Uma das limitações do JPA (e Hibernate) é justamente esta. Ou todas as entidades estão no mesmo servidor ou não. Caso não estejam, normalmente ele não irá conseguir fazer o mapeamento.
Imagine-se executando esta consulta no seu servidor. Fazendo o join de tabelas presentes neste servidor com tabelas presentes em outra. Como são instâncias distintas, armazenadas em locais completamente distintos, a consulta irá lhe retornar um erro, informando ou que um dos bancos de dados não existe ou que não há registros referentes em um dos lados do join.
GOSTEI 0
Euclides Filizola
21/09/2009
Eita.... e agora ? O que eu vou fazer ?
GOSTEI 0
Henrique Weissmann
21/09/2009
Neste caso você vai ter de pensar em uma abordagem alternativa.
Se um dos bancos de dados estiver por exemplo apenas na sua máquina temporáriamente, isto é, se posteriormente ele for ser incorporado no servidor central, faça uma cópia do banco de dados remoto para o seu computador e trabalhe como mencionei com você anteriormente.
Posteriormente, quando o seu sistema estiver pronto, o banco de dados da sua máquina estará no servidor e o problema será resolvido.
Agora, caso os bancos de dados sempre venham a se encontrar em servidores distintos, e não apenas em tempo de desenvolvimento, a coisa se complica BEM mais, pois você terá de pensar em alguma estratégia de integração entre os dois, e o JPA só poderá ser aplicado em entidades nas quais 100% dos seus dados se encontrem no mesmo servidor.
Se um dos bancos de dados estiver por exemplo apenas na sua máquina temporáriamente, isto é, se posteriormente ele for ser incorporado no servidor central, faça uma cópia do banco de dados remoto para o seu computador e trabalhe como mencionei com você anteriormente.
Posteriormente, quando o seu sistema estiver pronto, o banco de dados da sua máquina estará no servidor e o problema será resolvido.
Agora, caso os bancos de dados sempre venham a se encontrar em servidores distintos, e não apenas em tempo de desenvolvimento, a coisa se complica BEM mais, pois você terá de pensar em alguma estratégia de integração entre os dois, e o JPA só poderá ser aplicado em entidades nas quais 100% dos seus dados se encontrem no mesmo servidor.
GOSTEI 0
Euclides Filizola
21/09/2009
P**. E me diz uma coisa, me falaram de um tal de DBLink, que com ele, eu conseguiria fazer os dois bancos se enxergarem, ele vai servir no meu caso ? Vai funcionar perfeitamente ?
GOSTEI 0
Henrique Weissmann
21/09/2009
Euclides,
não conheço o DBLink, mas o pessoal do Hibernate tem um produto chamado Hibernate Shards, cujo objetivo é mais ou menos este. O link para o produto é https://www.hibernate.org/414.html
Infelizmente, assim como no caso do DBLink, nunca trabalhei com esta ferramenta.
não conheço o DBLink, mas o pessoal do Hibernate tem um produto chamado Hibernate Shards, cujo objetivo é mais ou menos este. O link para o produto é https://www.hibernate.org/414.html
Infelizmente, assim como no caso do DBLink, nunca trabalhei com esta ferramenta.
GOSTEI 0
Euclides Filizola
21/09/2009
Eu ouvi falar que daria para resolver o problema utilizanto data-sources. Você saberia me informar ?
GOSTEI 0
Euclides Filizola
21/09/2009
Eu ouvi falar que daria para resolver o problema utilizanto data-sources. Você saberia me informar ?
GOSTEI 0
Henrique Weissmann
21/09/2009
O problema continuaria sendo o mesmo: dados armazenados em servidores diferentes, dificultando assim a integração dos dados.
Neste caso, realmente não sei como seria usando DataSources.
GOSTEI 0
Henrique Weissmann
21/09/2009
O problema continuaria sendo o mesmo: dados armazenados em servidores diferentes, dificultando assim a integração dos dados.
Neste caso, realmente não sei como seria usando DataSources.
GOSTEI 0
Euclides Filizola
21/09/2009
Pode fechar esse post. Obrigado pela atenção.
GOSTEI 0