Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.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 带and运算符的条件API join子句_Java_Sql_Hibernate_Jpa_Criteria - Fatal编程技术网

Java 带and运算符的条件API join子句

Java 带and运算符的条件API join子句,java,sql,hibernate,jpa,criteria,Java,Sql,Hibernate,Jpa,Criteria,我正在尝试编写一个包含and运算符和join子句的查询,如下所示: Select distinct product.id_product, Brand.value as 'brand', FROM product INNER JOIN [product_attribut] as BRAND on BRAND.id_product= product.id_product and BRAND.id_attribut = '1' 我不知道如何用标准API实现它: final CriteriaBu

我正在尝试编写一个包含and运算符和join子句的查询,如下所示:

 Select distinct
product.id_product, 
Brand.value as 'brand',
FROM product
INNER JOIN [product_attribut] as BRAND on BRAND.id_product= product.id_product and BRAND.id_attribut = '1'
我不知道如何用标准API实现它:

final CriteriaBuilder productCriteriaBuilder = this.entityManager.getCriteriaBuilder();
final CriteriaQuery<Object> criteriaQuery = productCriteriaBuilder.createQuery(Object.class);
final Root<Product> root = criteriaQuery.from(Product.class);
final Join<Product, ProductAttribut> productBrand= root.join("productAttributs");
    Predicate brandPredicate = productCriteriaBuilder.and(productBrand, productCriteriaBuilder.equal(productBrand.get("id_attribut"), "1"));
final CriteriaBuilder productCriteriaBuilder=this.entityManager.getCriteriaBuilder();
final CriteriaQuery CriteriaQuery=productCriteriaBuilder.createQuery(Object.class);
最终根=criteriaQuery.from(Product.class);
最终加入productBrand=root.Join(“ProductAttributes”);
谓词brandPredicate=productCriteriaBuilder.and(productBrand,productCriteriaBuilder.equal(productBrand.get(“id_attribute”),“1”);
但是and()方法应该接受Expression类型的对象。 有什么解决办法吗?
谢谢您的帮助。

您只有一个谓词,因此使用
是没有用的。您只需要criteriaQuery.where(您拥有的唯一预测)。为什么不遵守Java命名约定呢?您只有一个谓词,所以使用
是没有用的。您只需要criteriaQuery.where(您拥有的唯一预测)。为什么不尊重Java命名约定呢?