Это должно делать то, что вы ищете, если вы сопоставили «user_id» как свойство и не отобразили никаких отношений (если вы сделали правильное свойство, то это может быть «myEntity.user.id» вместо «myEntity»).user_id ")
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));