Критерии гибернации - объедините две сущности, имеющие однонаправленные отношения - PullRequest
0 голосов
/ 28 августа 2018

Я использую 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`. 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...