1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
public
Object transformTuple(Object[] tuple, String[] aliases) {
Object result;
try
{
if
( setters ==
null
) {
setters =
new
Setter[aliases.length];
for
(
int
i =
0
; i < aliases.length; i++ ) {
String alias = aliases[i];
if
( alias !=
null
) {
setters[i] = propertyAccessor.getSetter( resultClass, alias );
}
}
}
result = resultClass.newInstance();
for
(
int
i =
0
; i < aliases.length; i++ ) {
if
( setters[i] !=
null
) {
setters[i].set( result, tuple[i],
null
);
}
}
}
catch
( InstantiationException e ) {
throw
new
HibernateException(
"Could not instantiate resultclass: "
+ resultClass.getName() );
}
catch
( IllegalAccessException e ) {
throw
new
HibernateException(
"Could not instantiate resultclass: "
+ resultClass.getName() );
}
return
result;
}
|
In order to make AliasToBeanResultTransformer
work properly you need to use proper alias names in yourquery
. If the property name in your StudentDto
class is name
, you should useselect student.name as name
; using select student.name as n
will again throw exception. The alias
names that you are using in the query
should be same as the property names in your DTO class.