Java QueryDSL将此路径作为源添加到查询异常

Java QueryDSL将此路径作为源添加到查询异常,java,jpa,querydsl,Java,Jpa,Querydsl,环境:Spring、JPA、Hibernate 我正在获取此Stacktrace(修改了类名): 我正在尝试这样做: public static final Predicate getByCodeAndName( final String sCode, final String sName) { BooleanExpression expression = null; QFooPK fooPK = QFooPK.fooPK; QFoo f

环境:Spring、JPA、Hibernate

我正在获取此Stacktrace(修改了类名):

我正在尝试这样做:

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;
}
Qfoook是定义为QFoo的PK的对象, 关系由QueryDSQL通过Maven自动定义

我试图实现如下查询:

从表1中选择*,其中XCODE='code'和XNAME='name'

TABLE1.XCODE和TABLE1.YCODE将是复合主键,TABLE1.XNAME只是一个字段


我不确定是什么导致了错误。

QFooPK.fooPK
是顶级变量,与您的实体无关。你的例子应该是这样的

public static final Predicate getByCodeAndName(
    final String sCode,
    final String sName) {
    QFoo foo = QFooVal.foo;
    return foo.id.code.eq(sCode)
        .and(foo.name.eq(sName));
}

id
替换为您的id属性名称

我最初是以foo.id().fooPK.code(sCode)的身份进行的。难怪它不起作用。
public static final Predicate getByCodeAndName(
    final String sCode,
    final String sName) {
    QFoo foo = QFooVal.foo;
    return foo.id.code.eq(sCode)
        .and(foo.name.eq(sName));
}