首页 > 解决方案 > 如何将此标准代码转换为 CriteriaBuilder

问题描述

我正在使用 3 个表设置休眠代码,我需要使用实体类来获取数据,而不是使用任何查询。

我有标准代码,我正在使用 createAlias 但无法转换CriteriaBuilder为休眠中的标准已被弃用。

Criteria criteria = session.createCriteria(Star.class, "star"); 
criteria.createAlias("star.assignedTo", "assigned"); 
criteria.createAlias("assigned.team", "team"); 
criteria.add(Restrictions.eq("team.team_id", "12393")); 

我想将此代码放入CriteriaBuilder.

标签: hibernatecriteriahibernate-criteria

解决方案


就像是

CriteriaBuilder cb; // if I remember correctly en can be obrained either from EntityManager or from CriteriaQuery - its been a while

root=cb.from(Star.class);
teamJoin=root.join("assignedTo").join("team");

cb.eq(teamJoin.get("team_id"),yourid)) // thats the predicate

显然这是一种伪代码,因为我不知道你的类和部分属性,但你应该从这里得到这个想法。

请记住,这些联接是内部联接。每个连接都可以将类型指定为第二个参数 - 以防万一。


推荐阅读