我无法将此表达式转换为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>
答案 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()) ) ;
和平。