Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 带条件API的Spring数据JPA子查询_Java_Spring_Oracle_Jpa 2.0_Spring Data Jpa - Fatal编程技术网

Java 带条件API的Spring数据JPA子查询

Java 带条件API的Spring数据JPA子查询,java,spring,oracle,jpa-2.0,spring-data-jpa,Java,Spring,Oracle,Jpa 2.0,Spring Data Jpa,我正在尝试创建一个具有规范的动态查询,其中包含两个具有双向关系的实体。这些实体是: @Entity @Table("SUPPLIERS") public class Supplier implements Serializable { @Id Column("ID") private Long id; @Id Column("COMPANY_ID") private Long companyId; } @Entity @Table("EMP

我正在尝试创建一个具有规范的动态查询,其中包含两个具有双向关系的实体。这些实体是:

@Entity
@Table("SUPPLIERS")
public class Supplier implements Serializable {

    @Id
    Column("ID")
    private Long id;

    @Id
    Column("COMPANY_ID")
    private Long companyId;
}


@Entity
@Table("EMPLOYEES")
public class Employee implements Serializable {

    @Id
    private Long id;

    @ManyToOne
    @JoinColumns({
        @JoinColumn(name = "FIRM_ID", referencedColumnName = "ID"),
        @JoinColumn(name = "FIRM_COMPANY_ID", referencedColumnName = "COMPANY_ID")
    })
    private Supplier supplier;
}
当我想根据供应商选择员工时

return new Specification<Employee>() {
    @Override
    public Predicate toPredicate(Root<Employee> root, CriteriaQuery<?> query, CriteriaBuilder cb) {

        Long[] supplierCodes = {1L, 2L};

        Subquery<Supplier> supplierBasicSubquery = query.subquery(Supplier.class);
        Root<Supplier> supplierBasicRoot = supplierBasicSubquery.from(Supplier.class);
        Join<Employee, Supplier> sqTfV = root.join("supplier", JoinType.INNER);

        supplierBasicSubquery.select(sqTfV).where(sqTfV.<Long>get("id").in(supplierCodes));


        return root.<Supplier>get("supplier").in(supplierBasicSubquery);
    }
};
如您所见,内部select列被括号包围,这会导致Oracle引发异常:

java.sql.SQLSyntaxErrorException: ORA-00920: invalid relational operator
我如何解决这个问题,有什么建议吗

非常感谢

java.sql.SQLSyntaxErrorException: ORA-00920: invalid relational operator