Я новичок в Hibernate. Я определил @ManyToOne
отношения Ленивый. Поэтому я использовал следующий код для извлечения нужных данных.
Criteria criteria = createEntityCriteria()
.addOrder(Order.asc("id"))
.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY)
.setFetchMode("unit", FetchMode.JOIN)
.setFetchMode("manufacturer",FetchMode.JOIN)
.setFetchMode("brand",FetchMode.JOIN)
.setFetchMode("preferred_supplier",FetchMode.JOIN);
Это работало нормально. Но затем я использовал этот код, чтобы сделать то же самое.
CriteriaBuilder cb = getCriteriaBuilder();
CriteriaQuery<Product> q = cb.createQuery(Product.class);
Root o = q.from(Product.class);
o.fetch("unit", JoinType.LEFT);
o.fetch("manufacturer",JoinType.LEFT);
o.fetch("brand",JoinType.LEFT);
o.fetch("preferred_supplier",JoinType.LEFT);
q.select(o);
q.where(cb.equal(o.get("id"), id));
Результат был таким же. Я хотел знать, в чем разница, и какой подход лучше или рекомендуется. Спасибо