如何正确使用setProjection?

我只想检索UserAccount类中的某些列,所以我有以下代码:

UserAccount aUser = (UserAccount)currentSession().createCriteria(UserAccount.class)

/* .setProjection(Projections.projectionList()

.add(Projections.property("id"))

.add(Projections.property("username"))

.add(Projections.property("email"))

.add(Projections.property("displayname"))) */

.add(Restrictions.eq("email", email))

.add(Restrictions.eq("password", password))

.add(Restrictions.eq("enabled", true))

.add(Restrictions.eq("role", Role.CUSTOMER))

.uniqueResult();

System.out.println(aUser);

return aUser;

我得到了空值作为回报。但是,如果我注释掉setProjections,我将获得具有所有属性的用户。在这种情况下,如何正确使用setProjection?

回答:

它返回一个Object数组,因此代码应为:

Object[] rows = (Object[]) session

.createCriteria(UserAccount.class)

.setProjection(

Projections.projectionList()

.add(Projections.property("id"))

.add(Projections.property("username"))

.add(Projections.property("email"))

.add(Projections.property("displayname")))

.add(Restrictions.eq("email", email))

.add(Restrictions.eq("password", password))

.add(Restrictions.eq("enabled", true))

.add(Restrictions.eq("role", Role.CUSTOMER))

.uniqueResult();

以上是 如何正确使用setProjection? 的全部内容, 来源链接: utcz.com/qa/405846.html

回到顶部