.add(Projections.property("userName"), "userName");
.. является правильным в этой ситуации.
Метод aliasToBean()
создает ResultTransformer , который будет вводить псевдонимы в экземпляры класса UserSummary с помощью методов или полей свойств. Второй параметр метода add()
- это то, где указывается прогнозируемый псевдоним свойства . Здесь вы указали 'userName', которое является свойством в классе UserSummary, которому будет отображаться проецируемое свойство. Вот почему это не сработало в первую очередь. Библиотека Hibernate не знает, какое поле / установщик UserSummary сопоставить свойству. Уберите метод aliasToBean()
, и он не будет пытаться делать какие-либо сопоставления. Итак, если кто-то имел:
private String userFullName;
public UserSummary(Integer id, String userFullName) {
this.id = id;
this.userFullName = userFullName;
this.clickUrl = clickUrl;
}
public String getUserFullName() {
return userFullName;
}
Метод add()
будет выглядеть следующим образом:
.add(Projections.property("userName"), "userFullName");
Пока оба userName класса User и userFullName класса UserSummary используют один и тот же тип , вы хороши идти.