QueryDSL fügen Sie diesen Pfad als Quelle für die Abfrage Ausnahme
Umgebung: Spring, JPA, Hibernate
Ich bin immer dieser Stacktrace (Klasse Namen geändert):
Undeclared path 'fooPK'. Add this path as a source to the query to be able to reference it.; nested exception is java.lang.IllegalArgumentException: Undeclared path 'fooPK'. Add this path as a source to the query to be able to reference it.
org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:293)
org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:106)
org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:403)
org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:58)
org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:213)
org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:163)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
org.springframework.data.jpa.repository.support.LockModeRepositoryPostProcessor$LockModePopulatingMethodIntercceptor.invoke(LockModeRepositoryPostProcessor.java:92)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:90)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
com.sun.proxy.$Proxy65.findOne(Unknown Source)
com.adc.common.config.service.XServiceImpl.getByConfigName(XServiceImpl.java:49)
Ich versuche, dies zu tun:
public static final Predicate getByCodeAndName(
final String sCode,
final String sName) {
BooleanExpression expression = null;
QFooPK fooPK = QFooPK.fooPK;
QFoo foo = QFoo.foo;
expression = fooPK.code.eq(sCode)
.and(foo.name.eq(sName));
return expression;
}
QFooPK ist ein Objekt definiert, wie eine PK von QFoo,
und die Beziehungen wurden automatisch definiert durch QueryDSQL über Maven.
Ich versuche zu tun, erzielen Sie eine Abfrage wie diese:
SELECT * FROM TABELLE1 WHERE XCODE = 'code' UND XNAME = 'name'
TABELLE1.XCODE und TABELLE1.YCODE wäre der zusammengesetzte Primärschlüssel und TABELLE1.XNAME nur ein Feld.
Ich bin mir nicht sicher, was den Fehler verursacht.
Du musst angemeldet sein, um einen Kommentar abzugeben.
QFooPK.fooPK
ist ein top-level-variable und nicht auf Ihre Person. Dein Beispiel sollte funktionieren wie dieseErsetzen
id
mit Ihrer id den Namen der Eigenschaft.