gpt4 book ai didi

java - 使用 criteriaquery fetch 和 createcriteria.setFechMode 的区别

转载 作者:太空宇宙 更新时间:2023-11-04 09:08:22 25 4
gpt4 key购买 nike

我是 Hibernate 的新手,我定义了 @ManyToOne 关系 Lazy。所以我使用以下代码来获取所需的数据。

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));

结果是一样的。我想知道有什么区别以及更好或推荐的方法是什么。谢谢

最佳答案

根据this

Hibernate offers an older, legacy org.hibernate.Criteria API which should be considered deprecated. No feature development will target those APIs. Eventually, Hibernate-specific Criteria features will be ported as extensions to the JPA javax.persistence.criteria.CriteriaQuery.

因此,您应该使用 javax.persistence.criteria.CriteriaQuery 而不是过时的 org.hibernate.Criteria

关于java - 使用 criteriaquery fetch 和 createcriteria.setFechMode 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59945082/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com