[RESOLVIDO]Hibernate: could not resolve property

Olá amigos,

Estou tendo uma dificuldade ao executar uma query com hibernate, segue abaixo a descrição do problema.

Tenho a classe ConsultaRapidaPrdutoPdvCateg

@NoArgsConstructor
@AllArgsConstructor
@Data
@EqualsAndHashCode(callSuper = false)
@Entity
@Table(name="CNSULT_RAPDA_PRDUTO_PDV_CATEG")
public class ConsultaRapidaPrdutoPdvCateg {
	
	@EmbeddedId
	private ConsultaRapidaPrdutoPdvCategKey id;
	
    @Column(name="CRPC_FLG_ATIVO")
    private String crpcFlgAtivo;

    @Column(name="CRPC_NOM")
    private String crpcNom;

    @Column(name="CRPC_NUM_ORDEM")
    private Integer crpcNumOrdem;

}

E a chave dela ConsultaRapidaPrdutoPdvCategKey

@Data
@AllArgsConstructor
@NoArgsConstructor
@Embeddable
public class ConsultaRapidaPrdutoPdvCategKey implements Serializable {

	private static final long serialVersionUID = 1L;

	@Column(name="crpc_num_seq")
    private Long crpcNumSeq;
}

Tenho a classe ConsultaRapidaPrdutoPdv

@Data 
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = false)
@Entity
@Table(name="cnsult_rapda_prduto_pdv")
public class ConsultaRapidaPrdutoPdv {

	@EmbeddedId
	private ConsultaRapidaPrdutoPdvKey id;
	
}

E a chave dela ConsultaRapidaPrdutoPdvKey

@Data
@AllArgsConstructor
@NoArgsConstructor
@Embeddable
public class ConsultaRapidaPrdutoPdvKey implements Serializable {

	private static final long serialVersionUID = 1L;

	@Column(name="crpc_num_seq")
    private Integer crpcNumSeq;

    @Column(name="pr_cod")
    private Integer prCod;
}

Utilizando o hibernate eu tento executar a seguinte query:

public List<ConsultaRapidaPrdutoPdvCateg> getCateg() {
        StringBuilder sb = new StringBuilder();
        sb.append("   FROM  ConsultaRapidaPrdutoPdvCateg c ");
        sb.append("   WHERE  c.crpcFlgAtivo = 'S' ");
        sb.append("     AND  EXISTS (SELECT  1 ");
        sb.append("                    FROM  ConsultaRapidaPrdutoPdv q ");
        sb.append("                   WHERE  q.crpcNumSeq = c.crpcNumSeq) ");
        
        Query query = getEntityManagerOff().createQuery(sb.toString());
        List<ConsultaRapidaPrdutoPdvCateg> resultList = query.getResultList();
        
		return resultList;
    }

Mas me retorna o erro abaixo:

org.springframework.dao.InvalidDataAccessApiUsageException: org.hibernate.QueryException: could not resolve property: crpcNumSeq of: br.com.senior.frentecaixa.persistence.produto.ConsultaRapidaPrdutoPdv [   FROM  br.com.senior.frentecaixa.persistence.produto.ConsultaRapidaPrdutoPdvCateg c    WHERE  c.crpcFlgAtivo = 'S'      AND  EXISTS (SELECT  1                     FROM  br.com.senior.frentecaixa.persistence.produto.ConsultaRapidaPrdutoPdv q                    WHERE  q.crpcNumSeq = c.crpcNumSeq) ]; nested exception is java.lang.IllegalArgumentException: org.hibernate.QueryException: could not resolve property: crpcNumSeq of: br.com.senior.frentecaixa.persistence.produto.ConsultaRapidaPrdutoPdv [   FROM  br.com.senior.frentecaixa.persistence.produto.ConsultaRapidaPrdutoPdvCateg c    WHERE  c.crpcFlgAtivo = 'S'      AND  EXISTS (SELECT  1                     FROM  br.com.senior.frentecaixa.persistence.produto.ConsultaRapidaPrdutoPdv q                    WHERE  q.crpcNumSeq = c.crpcNumSeq) ]
	at org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:367) ~[spring-orm-5.0.8.RELEASE.jar:5.0.8.RELEASE]
	at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:227) ~[spring-orm-5.0.8.RELEASE.jar:5.0.8.RELEASE]
	at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:527) ~[spring-orm-5.0.8.RELEASE.jar:5.0.8.RELEASE]
	at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61) ~[spring-tx-5.0.8.RELEASE.jar:5.0.8.RELEASE]
	at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:242) ~[spring-tx-5.0.8.RELEASE.jar:5.0.8.RELEASE]
	at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:153) ~[spring-tx-5.0.8.RELEASE.jar:5.0.8.RELEASE]
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185) ~[spring-aop-5.0.8.RELEASE.jar:5.0.8.RELEASE]
	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:294) ~[spring-tx-5.0.8.RELEASE.jar:5.0.8.RELEASE]
	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:98) ~[spring-tx-5.0.8.RELEASE.jar:5.0.8.RELEASE]
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185) ~[spring-aop-5.0.8.RELEASE.jar:5.0.8.RELEASE]
	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:688) ~[spring-aop-5.0.8.RELEASE.jar:5.0.8.RELEASE]
	at br.com.senior.frentecaixa.persistence.produto.ConsultaRapidaPrdutoPdvCategDAO$$EnhancerBySpringCGLIB$$ff65ac7f.getCateg(<generated>) ~[bin/:na]
	at br.com.senior.frentecaixa.persistence.produto.ConsultaRapidaPrdutoPrdvCategRN.buscaCategorias(ConsultaRapidaPrdutoPrdvCategRN.java:28) ~[bin/:na]
	at br.com.senior.frentecaixa.TesteDiogoDAO.executar(TesteDiogoDAO.java:26) ~[bin/:na]
	at br.com.senior.frentecaixa.PreExecucaoController.iniciarPreExecucaoSistema(PreExecucaoController.java:131) ~[bin/:na]
	at br.com.senior.frentecaixa.PreExecucaoView.lambda$0(PreExecucaoView.java:82) ~[bin/:na]
	at com.sun.javafx.application.PlatformImpl.lambda$null$172(PlatformImpl.java:295) ~[jfxrt.jar:na]
	at java.security.AccessController.doPrivileged(Native Method) ~[na:1.8.0_151]
	at com.sun.javafx.application.PlatformImpl.lambda$runLater$173(PlatformImpl.java:294) ~[jfxrt.jar:na]
	at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95) ~[jfxrt.jar:na]
	at com.sun.glass.ui.win.WinApplication._runLoop(Native Method) ~[jfxrt.jar:na]
	at com.sun.glass.ui.win.WinApplication.lambda$null$147(WinApplication.java:177) ~[jfxrt.jar:na]
	at java.lang.Thread.run(Unknown Source) ~[na:1.8.0_151]
Caused by: java.lang.IllegalArgumentException: org.hibernate.QueryException: could not resolve property: crpcNumSeq of: br.com.senior.frentecaixa.persistence.produto.ConsultaRapidaPrdutoPdv [   FROM  br.com.senior.frentecaixa.persistence.produto.ConsultaRapidaPrdutoPdvCateg c    WHERE  c.crpcFlgAtivo = 'S'      AND  EXISTS (SELECT  1                     FROM  br.com.senior.frentecaixa.persistence.produto.ConsultaRapidaPrdutoPdv q                    WHERE  q.crpcNumSeq = c.crpcNumSeq) ]
	at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:133) ~[hibernate-core-5.2.17.Final.jar:5.2.17.Final]
	at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:157) ~[hibernate-core-5.2.17.Final.jar:5.2.17.Final]
	at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:164) ~[hibernate-core-5.2.17.Final.jar:5.2.17.Final]
	at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:670) ~[hibernate-core-5.2.17.Final.jar:5.2.17.Final]
	at org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:23) ~[hibernate-core-5.2.17.Final.jar:5.2.17.Final]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_151]
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_151]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_151]
	at java.lang.reflect.Method.invoke(Unknown Source) ~[na:1.8.0_151]
	at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:305) ~[spring-orm-5.0.8.RELEASE.jar:5.0.8.RELEASE]
	at com.sun.proxy.$Proxy71.createQuery(Unknown Source) ~[na:na]
	at br.com.senior.frentecaixa.persistence.produto.ConsultaRapidaPrdutoPdvCategDAO.getCateg(ConsultaRapidaPrdutoPdvCategDAO.java:35) ~[bin/:na]
	at br.com.senior.frentecaixa.persistence.produto.ConsultaRapidaPrdutoPdvCategDAO$$FastClassBySpringCGLIB$$ea8423d.invoke(<generated>) ~[bin/:na]
	at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) ~[spring-core-5.0.8.RELEASE.jar:5.0.8.RELEASE]
	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:746) ~[spring-aop-5.0.8.RELEASE.jar:5.0.8.RELEASE]
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) ~[spring-aop-5.0.8.RELEASE.jar:5.0.8.RELEASE]
	at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:139) ~[spring-tx-5.0.8.RELEASE.jar:5.0.8.RELEASE]
	... 17 common frames omitted

Pelo que voce mapeou nao seria q.id.crpcNumSeq ao inves de q.crpcNumSeq?

1 curtida

Era isso mesmo @javaflex, alterei para

sb.append(" WHERE q.id.crpcNumSeq = c.id.crpcNumSeq) ");

E agora funcionou, obrigado!!