Bom dia caros amigos,
Eu tenho algumas tabelas dentro de “localhost”, e preciso acessar uma tabela em outro servidor, “172.168.0.10”. Como eu faço esse mapeamento ?
eu tentei fazer 2 persistences units, porém não funcionou.
Da uma olhada aqui no erro.
Aqui está meu persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0"
xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
<persistence-unit name="bancoLocal" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>entity.Grupo</class>
<class>entity.AndamentoSolicitacao</class>
<class>entity.Solicitacao</class>
<class>entity.Estado</class>
<class>entity.Viagem</class>
<properties>
<property name="hibernate.connection.driver_class" value="org.postgresql.Driver" />
<property name="hibernate.connection.username" value="postgres" />
<property name="hibernate.connection.password" value="root" />
<property name="hibernate.connection.url" value="jdbc:postgresql://localhost:5432/SISCONTV" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.format_sql" value="true" />
<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" />
</properties>
</persistence-unit>
<persistence-unit name="banco2" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>entity.Usuario</class>
<properties>
<property name="hibernate.connection.driver_class" value="org.postgresql.Driver" />
<property name="hibernate.connection.username" value="postgres" />
<property name="hibernate.connection.password" value="root" />
<property name="hibernate.connection.url" value="jdbc:postgresql://localhost:5432/postgres" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.format_sql" value="true" />
<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" />
</properties>
</persistence-unit>
</persistence>
… E da esse erro aqui:
javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not load an entity: [entity.Viagem#3]
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:24)
at teste.ViagemDAOTeste.testbuscarViagem(ViagemDAOTeste.java:53)
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#3]
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: relação "[DADOS DO SERVIDOR]" não existe
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:1547)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1315)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:190)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:451)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:350)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:254)
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
… Ele gera esse sql aqui:
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_7_1_,
pais2_.ds_pais as ds2_7_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_5_3_,
usuario4_.nome as nome5_3_,
usuario4_.matricula as matricula5_3_,
usuario4_.setor as setor5_3_,
usuario4_.tipo_usuario as tipo5_5_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=?
…
Mas o problema é o seguinte, ele ta tentando acessar uma tabela “[DADOS DO SERVIDOR]”, que está em outro servidor (172.168.0.10) que não é o dele, por isso ta dando esse erro. E eu preciso acessar essa tabela, entendeu ?
Me disseram que daria para eu resolver utilizando data-sources. Alguém poderia me passar algo ???
Gostaria de saber como eu resolveria isso…
Alguem poderia me ajudar ?
Abraços…