[
http://opensource.atlassian.com/projects/hibernate/browse/HHH-5063?page=c...
]
Shawn Clowater edited comment on HHH-5063 at 4/1/10 9:21 PM:
-------------------------------------------------------------
If I hack in this it actually works as I expected, I am prepending my aliases with x and
then stripping them off with this:
{code}
private class HackResultTransformer extends AliasToBeanResultTransformer{
public HackResultTransformer(Class resultClass) {
super(resultClass);
}
@Override
public Object transformTuple(Object[] tuple, String[] aliases) {
String[] cleanedUpAliases = new String[aliases.length];
for (int i = 0; i < aliases.length; i++){
cleanedUpAliases[i] = aliases[i].replaceFirst("x",
"");
}
return super.transformTuple(tuple, cleanedUpAliases);
}
}
{code}
was (Author: sclowater):
If I hack in this it actually works as I expected, I am prepending my aliases with x
and then stripping them off with this:
private class HackResultTransformer extends AliasToBeanResultTransformer{
public HackResultTransformer(Class resultClass) {
super(resultClass);
}
@Override
public Object transformTuple(Object[] tuple, String[] aliases) {
String[] cleanedUpAliases = new String[aliases.length];
for (int i = 0; i < aliases.length; i++){
cleanedUpAliases[i] = aliases[i].replaceFirst("x",
"");
}
return super.transformTuple(tuple, cleanedUpAliases);
}
}
Projections that have aliases same as the property name result in
invalid sql
-----------------------------------------------------------------------------
Key: HHH-5063
URL:
http://opensource.atlassian.com/projects/hibernate/browse/HHH-5063
Project: Hibernate Core
Issue Type: Bug
Components: query-criteria
Affects Versions: 3.5.0-Final
Reporter: Shawn Clowater
I have a criteria query that is using an AliasToBeanTransformer that I'm using to
selectively populate some of the properties. It appears that the transformer requires the
alias values to match the properties of your bean so that it can call the setters via
reflection.
The code snippet is similar to the following
return (List<DataProvider>) session.createCriteria(DataProvider.class)
.setProjection(Projections.projectionList()
.add(Projections.property("dataProviderId),
"dataProviderId")
.add(Projections.property("uuid"), "uuid")
.add(Projections.property("name"), "name")
.add(Projections.property("dataProviderGroup"),
"dataProviderGroup")
.add(Projections.property("verifiedFlg"),
"verifiedFlg")
)
.setResultTransformer(new
AliasToBeanResultTransformer(DataProvider.class))
.addOrder(Order.asc("name"))
.list();
And is resulting in the following SQL
select y0_ as y0_, y1_ as y1_, y2_ as y2_, y3_ as y3_, y4_ as y4_ from DATA_PROVIDER
this_ order by y2_ asc
I can assure you that my column names are not y0_, etc.
This worked in 3.3.2 and I am suspecting it might be due to the change for HHH-1088. If
I don't specify the alias or even change the value then it will produce a valid query
it just won't populate by bean correctly.
i.e. if I append anything to the end of the first alias (i.e. "hi") results
in:
select this_.DATA_PROVIDER_ID as y0_, y1_ as y1_, y2_ as y2_, y3_ as y3_, y4_ as y4_ from
DATA_PROVIDER this_ order by y2_ asc
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://opensource.atlassian.com/projects/hibernate/secure/Administrators....
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira