Chciałbym zapytanie Kryteria, aby utworzyć instancję klasy DTO przy użyciu AliasToBeanResultTransformer. Celem jest stworzenie listy stron o niskiej wadze z identyfikatorami do dalszych działań na stronie głównej. To wymaga zapytania typu raportowania.AliasToBeanResultTransformer (MyDTO.class) nie tworzy instancji MyDTO
Criteria crit = session.createCriteria(Profile.class);
crit.createAlias("personalData", "pd");
crit.createAlias("emails", "e");
crit.createAlias("telephones", "t");
ProjectionList properties = Projections.projectionList();
properties.add(Projections.property("id").as("id"));
properties.add(Projections.property("pd.lastName").as("lastName"));
properties.add(Projections.property("pd.fullName").as("fullName"));
properties.add(Projections.property("e.emailAddress").as("email"));
properties.add(Projections.property("t.phoneNumber").as("phone"));
crit.setProjection(properties);
crit.setResultTransformer(new AliasToBeanResultTransformer(ProfileDTO.class));
profiles = crit.list();
Nie można utworzyć mojej klasy DTO. ProfileDTO ma konstruktora Dopasowanie:
public ProfileDTO(Long id, String lastName, String fullName, String email,
String phone) {
this(id,fullName);
this.lastName = lastName;
this.email = email;
this.phone = phone;
}
I kwerenda działa kiedy skonstruować ProfileDTO Przedmioty ręcznie z wierszy wynikowych
List<Object[]> rows = crit.list();
for (Object[] row: rows) {
ProfileDTO dto = new ProfileDTO();
dto.setId((Long)row[0]);
dto.setLastName((String)row[1]);
dto.setFullName((String)row[2]);
dto.setEmail((String)row[3]);
dto.setPhone((String)row[4]);
profiles.add(dto);
}
Moja obejście działa poprawnie, ale wydaje się zbędne. Co ja robię źle?
Thanks JB. Przestanę się martwić i obejmuję majsterkowanie. Jak mówisz, działa dobrze, jak jest. – carbontax
czy możesz podać przykład? –