#java #hibernate #jpa
#java #спящий режим #jpa
Вопрос:
У меня возникла проблема при использовании «выборки» в консультации, которая отвечает за выкуп PPA и, из него, его программ, которые, в свою очередь, выкупают общие ресурсы, и по этой причине используется выборка. Когда выборка не используется, запрос работает нормально, но из-за вышеуказанных потребностей это необходимо.
Метод с запросом:
public PPA localizarPPACompleta(Long idPpa) {
String sql = "SELECT a FROM br.gov.ac.tce.icuria.modelo.entidades.planejamento.PPA a LEFT JOIN FETCH a.programas AS p LEFT JOIN FETCH p.acoes WHERE a.id = :idPpa";
TypedQuery<PPA> query = entityManager.createQuery(sql, PPA.class);
query.setParameter("idPpa", idPpa);
try {
return query.getSingleResult();
} catch (NoResultException ne) {
return null;
}
}
Сопоставление классов PPA:
@EntidadeDoPlanejamento
@XmlRootElement
@XmlType(propOrder = {})
@XmlAccessorType(XmlAccessType.FIELD)
@Entity(name = "br.gov.ac.tce.icuria.modelo.entidades.planejamento.PPA")
@AttributeOverride(name = "id", column = @Column(name = "ID_PPA"))
@Table(name = "PPA", schema = "planejamento", uniqueConstraints = {
@UniqueConstraint(name = "UQ__PPA_1", columnNames = { "ID_ENTIDADE",
"ANO_INICIAL_VIGENCIA", "ANO_FINAL_VIGENCIA" }),
@UniqueConstraint(name = "UQ__PPA_2", columnNames = { "NUMERO_LEI",
"ID_ENTIDADE" }) })
@NamedQuery(name = "PPA.porChaveLogica", query = "select p from br.gov.ac.tce.icuria.modelo.entidades.planejamento.PPA p where p.ano = :ano and p.entidade = :entidade")
@Audited(auditParents = Cadastravel.class)
public class PPA extends Cadastravel implements IFDadosElegis {
private static final long serialVersionUID = -3581419763803965106L;
@NotNull
@Column(name = "NUMERO_LEI", nullable = false)
private Integer numero;
@CampoValidacao
@CampoChave
@NotNull
@Column(name = "ANO_LEI", nullable = false)
private Integer ano;
@CampoValidacao
@NotNull
@Column(name = "ANO_INICIAL_VIGENCIA", nullable = false)
private Integer anoInicialDeVigencia;
@CampoValidacao
@NotNull
@Column(name = "ANO_FINAL_VIGENCIA", nullable = false)
private Integer anoFinalDeVigencia;
@NotNull
@Column(name = "TIPO_LEI", nullable = false)
private TipoDaLei tipoDaLei;
@XmlTransient
@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy = "ppa")
private Set<Programa> programas;
@XmlTransient
@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy = "ppa")
private Set<LDO> ldos;
@XmlTransient
@Column(name = "CAMINHO_DOCUMENTO_ELEGIS", nullable = true)
private String caminhoDocumentoNoElegis;
@XmlTransient
@OneToMany(mappedBy = "ppa")
private Set<Orgao> orgaos;
Ошибка консоли:
17:04:10,249 WARN [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] (default task-10) SQL Error: 207, SQLState: S0001
17:04:10,249 ERROR [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] (default task-10) Nome de coluna 'br' inválido.
17:04:10,249 INFO [org.hibernate.event.internal.DefaultLoadEventListener] (default task-10) HHH000327: Error performing load command : org.hibernate.exception.SQLGrammarException: could not extract ResultSet
17:04:10,249 INFO [javax.enterprise.resource.webcontainer.jsf.context] (default task-10) javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not extract ResultSet: javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not extract ResultSet
at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:154)
at org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1514)
at org.hibernate.query.internal.AbstractProducedQuery.getSingleResult(AbstractProducedQuery.java:1553)
at org.jboss.as.jpa.container.TypedQueryNonTxInvocationDetacher.getSingleResult(TypedQueryNonTxInvocationDetacher.java:69)
at br.gov.ac.tce.icuria.persistencia.dao.PpaDAO.localizarPPACompleta(PpaDAO.java:39)
at br.gov.icuria.service.PPAService.localizarPPACompleta(PPAService.java:53)
at br.gov.icuria.service.PPAService$Proxy$_$$_WeldSubclass.localizarPPACompleta(Unknown Source)
at br.gov.icuria.conversor.PpaConverter.getIdentificavel(PpaConverter.java:21)
at br.gov.icuria.conversor.PpaConverter.getIdentificavel(PpaConverter.java:10)
at br.gov.icuria.conversor.ConversorGenerico.getAsObject(ConversorGenerico.java:23)
at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getConvertedValue(HtmlBasicInputRenderer.java:147)
at com.sun.faces.renderkit.html_basic.MenuRenderer.convertSelectOneValue(MenuRenderer.java:146)
at com.sun.faces.renderkit.html_basic.MenuRenderer.getConvertedValue(MenuRenderer.java:208)
at org.primefaces.component.selectonemenu.SelectOneMenuRenderer.getConvertedValue(SelectOneMenuRenderer.java:80)
at javax.faces.component.UIInput.getConvertedValue(UIInput.java:1105)
at javax.faces.component.UIInput.validate(UIInput.java:1006)
at javax.faces.component.UIInput.executeValidate(UIInput.java:1317)
at javax.faces.component.UIInput.processValidators(UIInput.java:733)
at javax.faces.component.UISelectOne.processValidators(UISelectOne.java:183)
at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:921)
at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:921)
at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:921)
at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:921)
at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:921)
at org.primefaces.component.panel.Panel.processValidators(Panel.java:313)
at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:921)
at org.primefaces.component.fieldset.Fieldset.processValidators(Fieldset.java:225)
at javax.faces.component.UIForm.processValidators(UIForm.java:229)
at com.sun.faces.context.PartialViewContextImpl$PhaseAwareVisitCallback.visit(PartialViewContextImpl.java:608)
at com.sun.faces.component.visit.PartialVisitContext.invokeVisitCallback(PartialVisitContext.java:159)
at javax.faces.component.UIForm.visitTree(UIForm.java:365)
at javax.faces.component.UIComponent.visitTree(UIComponent.java:1468)
at javax.faces.component.UIComponent.visitTree(UIComponent.java:1468)
at com.sun.faces.context.PartialViewContextImpl.processComponents(PartialViewContextImpl.java:400)
at com.sun.faces.context.PartialViewContextImpl.processPartial(PartialViewContextImpl.java:261)
at org.primefaces.context.PrimePartialViewContext.processPartial(PrimePartialViewContext.java:57)
at javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:1307)
at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:53)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:76)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:177)
at javax.faces.webapp.FacesServlet.executeLifecyle(FacesServlet.java:707)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:451)
at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)
at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:81)
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
at br.gov.icuria.filter.SessionTimeoutFilter.doFilter(SessionTimeoutFilter.java:46)
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
at br.gov.icuria.filter.SessionTimeoutFilter.doFilter(SessionTimeoutFilter.java:46)
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
at io.opentracing.contrib.jaxrs2.server.SpanFinishingFilter.doFilter(SpanFinishingFilter.java:55)
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)
at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
at io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68)
at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
at org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:132)
at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
at io.undertow.server.handlers.DisableCacheHandler.handleRequest(DisableCacheHandler.java:33)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
at io.undertow.security.handlers.AuthenticationConstraintHandler.handleRequest(AuthenticationConstraintHandler.java:53)
at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
at io.undertow.servlet.handlers.security.ServletSecurityConstraintHandler.handleRequest(ServletSecurityConstraintHandler.java:59)
at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)
at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)
at io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(NotificationReceiverHandler.java:50)
at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
at org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
at org.wildfly.extension.undertow.deployment.GlobalRequestControllerHandler.handleRequest(GlobalRequestControllerHandler.java:68)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:292)
at io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:81)
at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:138)
at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:135)
at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)
at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
at org.wildfly.extension.undertow.security.SecurityContextThreadSetupAction.lambda$create$0(SecurityContextThreadSetupAction.java:105)
at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1502)
at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1502)
at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1502)
at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1502)
at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1502)
at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:272)
at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81)
at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:104)
at io.undertow.server.Connectors.executeRootHandler(Connectors.java:364)
at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:830)
at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1982)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1486)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1377)
at java.lang.Thread.run(Thread.java:748)
Caused by: org.hibernate.exception.SQLGrammarException: could not extract ResultSet
at org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:106)
at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:42)
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:113)
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:99)
at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:69)
at org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.getResultSet(AbstractLoadPlanBasedLoader.java:419)
at org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.executeQueryStatement(AbstractLoadPlanBasedLoader.java:191)
at org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.executeLoad(AbstractLoadPlanBasedLoader.java:121)
at org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.executeLoad(AbstractLoadPlanBasedLoader.java:86)
at org.hibernate.loader.entity.plan.AbstractLoadPlanBasedEntityLoader.load(AbstractLoadPlanBasedEntityLoader.java:188)
at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:4273)
at org.hibernate.event.internal.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:511)
at org.hibernate.event.internal.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:481)
at org.hibernate.event.internal.DefaultLoadEventListener.load(DefaultLoadEventListener.java:222)
at org.hibernate.event.internal.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:281)
at org.hibernate.event.internal.DefaultLoadEventListener.doOnLoad(DefaultLoadEventListener.java:124)
at org.hibernate.event.internal.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:92)
at org.hibernate.internal.SessionImpl.fireLoad(SessionImpl.java:1257)
at org.hibernate.internal.SessionImpl.internalLoad(SessionImpl.java:1140)
at org.hibernate.type.EntityType.resolveIdentifier(EntityType.java:682)
at org.hibernate.type.EntityType.resolve(EntityType.java:464)
at org.hibernate.type.ManyToOneType.resolve(ManyToOneType.java:239)
at org.hibernate.engine.internal.TwoPhaseLoad.doInitializeEntity(TwoPhaseLoad.java:172)
at org.hibernate.engine.internal.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:129)
at org.hibernate.loader.Loader.initializeEntitiesAndCollections(Loader.java:1151)
at org.hibernate.loader.Loader.processResultSet(Loader.java:1010)
at org.hibernate.loader.Loader.doQuery(Loader.java:948)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:340)
at org.hibernate.loader.Loader.doList(Loader.java:2689)
at org.hibernate.loader.Loader.doList(Loader.java:2672)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2506)
at org.hibernate.loader.Loader.list(Loader.java:2501)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:504)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:395)
at org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:220)
at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1508)
at org.hibernate.query.internal.AbstractProducedQuery.doList(AbstractProducedQuery.java:1537)
at org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1505)
... 99 more
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: Nome de coluna 'br' inválido.
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:262)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1632)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(SQLServerPreparedStatement.java:602)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute(SQLServerPreparedStatement.java:524)
at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:7375)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:3206)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:247)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:222)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.executeQuery(SQLServerPreparedStatement.java:446)
at org.jboss.jca.adapters.jdbc.WrappedPreparedStatement.executeQuery(WrappedPreparedStatement.java:504)
at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:60)
... 132 more
Я использую гибернацию версии 5.0.0.Final
Комментарии:
1. У меня есть предположение, которое
Nome de coluna 'br' inválido
может вам кое-что сказать. И просто примечание: вы делаете очень плохо, что вы кодируете на каком-то языке X.. который не является английским.2. Основная проблема заключается в том, что ‘br’ — это не столбец, это пакет, но по какой-то причине при выполнении запроса он обрабатывается как столбец.
Ответ №1:
Объект должен быть указан без пакета
String sql = "SELECT a FROM PPA a ...