Hibernate 以下sql查询的等效条件?

Hibernate 以下sql查询的等效条件?,hibernate,criteria,Hibernate,Criteria,我正在使用Hibernate。我有以下SQL查询。我必须把它转换成标准。我怎样才能做到呢 SELECT DISTINCT username FROM usertable WHERE user_id in (SELECT DISTINCT user_id FROM someother_table); 如果您已经将“user\u id”映射为属性,并且没有映射任何关系(如果您这样做了,则正确的属性可能是“myEntity.user.id”而不是“myEntity.user\u

我正在使用Hibernate。我有以下SQL查询。我必须把它转换成标准。我怎样才能做到呢

SELECT DISTINCT username 
    FROM usertable 
    WHERE user_id in (SELECT DISTINCT user_id FROM someother_table);

如果您已经将“user\u id”映射为属性,并且没有映射任何关系(如果您这样做了,则正确的属性可能是“myEntity.user.id”而不是“myEntity.user\u id”),那么这应该满足您的要求


你好,谢谢你的回复。上述查询未返回任何结果。我做了一个小小的改变。我用exists替换了propertyIn,然后它工作了。我的问题是上面的查询返回单个用户名。但我想要所有MyEntity对象。请帮帮我。嗨,在那种情况下,well exists没有多大意义。它只会询问子查询是否返回任何内容。您如何映射myEntity.user\u id?要返回一组不同的MyEntity对象,必须使用criteria.setResultTransformer(criteria.distinct\u ROOT\u ENTITY);而不是criteria.setProjection(…)
Criteria criteria = getSession().createCriteria(MyEntity.class, "myEntity");

//setting projection to distinct(myEntity.username)
criteria.setProjection(Projections.distinct(Projections.property("myEntity.username")));

DetachedCriteria subCriteria = DetachedCriteria.forClass(MyOtherEntity.class, "myOtherEntity");
subCriteria.setProjection(Projections.distinct(Projections.property("myOtherEntity.user_id")));

criteria.add(Subqueries.propertyIn("myEntity.user_id", subCriteria));