У меня есть следующие классы
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 для этого?