这是我拥有的 SQL 语句。
SELECT USER_PROFILE.FIRST_NAME, USER_PROFILE.LAST_NAME, USER_PROFILE.USER_TYPE
FROM USER_PROFILE
INNER JOIN USER_LOGIN_STATUS
ON USER_PROFILE.USER_ID=USER_LOGIN_STATUS.USER_ID
ORDER BY USER_PROFILE.FIRST_NAME
而且我正在尝试执行下面的代码,我认为它相当于休眠 DetachedCriteria 并期望只有两个数据作为结果。
DetachedCriteria dc = getDetachedCriteria();
DetachedCriteria userLoginCriteria = DetachedCriteria.forClass(UserLoginStatus.class);
userLoginCriteria.setProjection(Projections.distinct(Projections.property("userId")));
dc.add(Subqueries.propertyIn(UserField.id.name(), userLoginCriteria));
DetachedCriteria profileCriteria = dc.createCriteria("profile");
profileCriteria.addOrder(Order.asc("firstName"));
return getAll(dc, pageSetting);
但不幸的是,这是出乎意料的结果:我有多个数据结果。
姓名 | 类型 |
- 本·琼斯 | 用户 |
- 本·琼斯 | 用户 |
- 汤姆荷马 | 嘉宾 |
- 汤姆荷马 | 嘉宾 |
有没有人知道确切等效的 DetachedCriteria 或解决方案?