hi appfusers,

i have declared the next entity

[code]
@Entity
@Table(name="VA01")
@NamedQueries ({
    @NamedQuery(
        name = "findMetadataHeader",
        query = "select distinct 0 as id, ordencolumna, nombrecolumna, 0 as
mvalorcolumna, 0 as orden, 0 as idi18, 0 as idperiodo, 0 as idestructura ,
tipo  from ViewDataGrid order by ordencolumna"
        ),
    @NamedQuery(
        name = "findViewDataGridAllKpis",
        query = "select v.id, v.ordencolumna, v.nombrecolumna,
v.mvalorcolumna, v.orden, v.idi18, v.idperiodo, v.idestructura, v.tipo from
ViewDataGrid v where (v.idperiodo is null or v.idperiodo = :idperiodo) and
(v.idestructura is null or v.idestructura = :idestructura) and (v.idi18 =
:idi18) order by v.orden, v.ordencolumna, v.idperiodo, decode(v.tipo, 'I',
1, 0)"
        )
})
public class ViewDataGrid {

    private Long id;
    private Long ordencolumna;
    private String nombrecolumna;
    private String mvalorcolumna;
    private String orden;
    private Long idi18;
    private Long idperiodo;
    private Long idestructura;
    private String tipo;

.... get and setters...
[/code]

if i declared the next method, the execution returns a Object list and not a
ViewDataGrid List, also, a casting throws a classcast Exception in the test
execution

[code]
    public List<ViewDataGrid> getMetadataHeader() {
return getHibernateTemplate().findByNamedQuery("findMetadataHeader");
}
[/code]


but on the other hand, if i declared the next method, the execution returns
a ViewDataGrid List

[code]
    public List<ViewDataGrid> getMetadataHeader() {
        Table table = AnnotationUtils.findAnnotation(ViewDataGrid.class,
Table.class);
        NamedQueries namedQueries =
AnnotationUtils.findAnnotation(ViewDataGrid.class, NamedQueries.class);
        NamedQuery [] aNamedQuery = namedQueries.value();
        String sQuery = aNamedQuery[0].query();
        sQuery = sQuery.replaceAll("ViewDataGrid", table.name());
        Query query =

getSession().createSQLQuery(sQuery).addEntity(ViewDataGrid.class);
        return query.list();
}
[/code]

What is the problem in the first method ?

thanks

Reply via email to