Oi.
Tenho um código que lista livros, agrupados por autor.
Gostaria de adicionar uma “coluna” com o total dos autores por livro.
E a coluna “total” virou um nó para mim.
O motivo parece simples: estou usando Transformers.aliasToBean, e quando adiciono “rowCount” com o nome “total”, dá erro dizendo que não existe setter para essa propriedade (“total”) na classe que defini como Bean de referência para o Transformers.
E isso é verdade, claro.
Só que não sei avançar a partir daí…
Já procurei absurdos pela internet e não achei nada que pudesse me dar uma dica…
Ou, algo me dizendo que isso é estúpido e que a maneira correta é outra.
Alguém pode ajudar?
Ah sim, não seria problema se ao invés de usar aliasToBean eu simplesmente lidasse com os Object. Nesse caso eu simplesmente usaria rowCount() e leria o valor da “coluna” desejada, mas justamente quero evitar ler os “campos” através de índices numéricos (o que Object me obrigaria a fazer), por isso estou usando aliasToBean… mas aí caí no problema de ter que seguir as regras do bean.
Alguma idéia?
Deveria eu criar um Pojo só para esse resultado?
Criteria crit = this.session.createCriteria(Livro.class);
ProjectionList proList = Projections.projectionList();
proList.add(Projections.rowCount(), "total" );
proList.add(Projections.property("autor"), "autor");
proList.add(Projections.groupProperty("autor"));
crit.setProjection(proList).setResultTransformer(Transformers.aliasToBean((Livro.class)));
List results = crit.list();
[]s
Esquizo