休眠条件-连接具有单向关系的两个实体

时间:2018-08-28 09:51:28

标签: hibernate criteria hibernate-criteria

我正在使用Hibernate 5.3。我正在尝试找到一种使用Criteria API连接具有单向关系的实体的方法。

在以下示例中,ProductRating实体与ClientProduct具有多对一关系,但是ClientProduct实体没有关于ProductRating的信息。

@Entity
@Table(name = "product_ratings")
public class ProductRatingImpl implements ProductRating {

    private ClientProduct clientProduct;

    @ManyToOne(targetEntity = ClientProductImpl.class)
    @JoinColumn(name = "client_product_id")
    @Override
    public ClientProduct getClientProduct() {
        return clientProduct;
    }

使用CriteriaBuilder,已使用ClientProduct类创建查询和根目录。

final CriteriaBuilder criteriaBuilder = getCurrentSession().getCriteriaBuilder();
final CriteriaQuery<ClientProductImpl> clientProductCriteriaQuery = criteriaBuilder.createQuery(ClientProductImpl.class);
final CriteriaQuery<ProductRatingImpl> productRatingCriteriaQuery =  criteriaBuilder.createQuery(ProductRatingImpl.class);

final Root<ClientProductImpl> clientProductRoot = clientProductCriteriaQuery.from(ClientProductImpl.class);
final Root<ProductRatingImpl> productRatingRoot = ProductRatingCriteriaQuery.from(ProductRatingImpl.class);

final Join<ClientProductImpl, ProductImpl> productJoin = clientProductRoot.join("product", JoinType.INNER);
final Join<ClientProductImpl, ProductCategoryImpl> productCategoryJoin = productJoin.join("productCategory", JoinType.INNER);

// Need to join `ProductRatingImpl` here with `clientProductRoot`. 

0 个答案:

没有答案