将SQL查询转换为Hibernate Criteria表达式

时间:2012-07-31 14:59:15

标签: sql hibernate criteria restriction

我无法将此表达式转换为Criteria表达式:

SELECT profile_profiles.profile_sup_id 
  FROM profil
  INNER JOIN profile_profiles ON profile_profiles.profile_id = profil.id 
        AND profil.id = 4

有人可以帮忙吗?

我有一张桌子'Profil'很多很多,而且很有礼貌

Profil 1 --- profile_profiles --- Profil 2

public class Profil implements Serializable {

    private static final long serialVersionUID = 1L;
    private Long id;
    private String libelle;
    private Set<Profil> profiles = new HashSet<Profil>(0);
...
}

HBM

<set name="profiles" table="profile_profiles" cascade="all">
            <key column="profile_id" />
            <many-to-many column="profile_sup_id" class="com.steriamedshore.proboard.model.referentiel.Profil" />
        </set>

2 个答案:

答案 0 :(得分:0)

Criteria c = session.createCriteria(Profil.class, "profil");
c.createAlias("profil.profiles", "supProfil");
c.add(Restrictions.eq("profil.id", 4);
c.setProjection(Projections.property("supProfil.id"));

上面的AFAIK应该从连接表到配置文件表进行额外的连接,但它应该返回与SQL查询相同的东西。

答案 1 :(得分:0)

非常感谢@JB Nizet

我昨天确实找到了解决方案:

hibernateCriteria.createCriteria("profil").createAlias("profiles", "ps").add( Restrictions.eq("ps.id",superieurCriteria.getProfilId()) ) ;

和平。