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:
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:
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?
class Usuario
@ManyToMany(targetEntity=Grupo.class,mappedBy="listaUsuarios")
@JoinTable(name="tbsisc_usuario_grupo")
private List<Grupo> listGrupos;
@OneToMany(mappedBy="usuario")
private List<Solicitacao> listaSolicitacao = new LinkedList<Solicitacao>();
class Solicitacao
@ManyToOne
@JoinColumn(name="pktbsisc_usuario")
private Usuario usuario;
class Grupo
@ManyToMany(targetEntity = Usuario.class)
@JoinTable(name = "tbsisc_usuario_grupo", joinColumns = @JoinColumn(name = "id_usuario"), inverseJoinColumns = @JoinColumn(name = "id_grupo"))
private List<Usuario> listaUsuarios = new LinkedList<Usuario>();
Alguém poderia me dizer se entre esses relacionamentos, há algum erro de vista ?