Как выполнить пользовательский запрос Dynami c в спящем режиме - PullRequest
0 голосов
/ 09 июля 2020

У меня есть следующие классы

class Seller {
    ....
    ....
    @ManyToMany(cascade = { CascadeType.ALL},fetch = FetchType.LAZY)
    @JoinTable(name = "sellerprodTyperel", joinColumns = { @JoinColumn(name = "SellerID") }, inverseJoinColumns = { @JoinColumn(name = "ProductTypeID") })
    private Set<ProductType> productTypes;
    ....

    ....
 }

 class ProductType {
 ....
 ....
 @ManyToMany(cascade = { CascadeType.ALL},fetch = FetchType.LAZY)
 @JoinTable(name = "sellerprodTyperel", joinColumns = { @JoinColumn(name = "ProductTypeID") }, inverseJoinColumns = { @JoinColumn(name = "SellerID") })
 private Set<Seller> sellers;
 ....
}

Теперь я хочу найти тип продукта на основе продавца. Я хочу сгенерировать динамический c запрос, т.е. на основе параметра поиска, я хочу создать запрос и запустить его.

Я вроде как думаю написать что-то похожее на этот код ниже, но есть проблема с производительностью Я получаю, а иногда ответ не приходит.

Session session = entityManagerFactory.unwrap(SessionFactory.class).openSession().getSession();
    NativeQuery nquery = session.createSQLQuery(query.toString()).addEntity(ProductType.class);
    nquery.setFirstResult(startIndex);
    nquery.setMaxResults(size);
    session.close();
    return nquery.list();

Здесь запрос - это динамическая сборка, отправляемая этому методу для выполнения.

Это лучший способ сделать это или какой-либо лучший способ или процесс Hibernate для этого?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...