Хорошо, я нашел для меня средство
Сначала я создал отдельный критерий, который находит все идентификаторы группы, в которых пользователь является членом:
DetachedCriteria subquery = DetachedCriteria.forClass(Group.class);
subquery.createAlias("groupMembers", "gm");
subquery.add(Restrictions.eq("gm.userId", user.getId()));
subquery.setProjection(Projections.property("id"));
Тогда по моим основным критериям:
crit.add(
Restrictions.or(
Restrictions.isNull("group"),
Subqueries.propertyIn("group.groupId", subquery)
)
);
Надеюсь, это кому-нибудь поможет