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