Select Map Tutorial

Domain

public class Person {
	private String name;
	private String surname;
	private List<Person> friends;
	private Person mum;
	private Person dud;
	private Home home;
	private Dog dog;
	...gets sets...
}
public class Home {
	public enum HomeType {KENNEL,HOUSE};
	private String address;
	private HomeType type;
	private int weight;
	private double price;
	...gets sets...
}

Mapping Domain (ex Simple DTO)

public class PersonDTO {
	private String name;
	private String surname;
	private AdressDTO address;
	...gets sets...
}
public class AddressDTO {
	private String address;
	...gets sets...
}

Projection

Select name,surname and address of person and fill the relative dto.

QueryEngine<?> engine = ...
SelectMapQuery<Person,PersonDTO> query = engine.newSelectMap(Person.class,PersonDTO.class)
Person toSearch = query.target();
PersonDTO mapper = query.mapper();
query.prj(toSearch.getName(),mapper.getName());
query.prj(toSearch.getSurname(),mapper.getSuname());
query.prj(toSearch.getHome().getAddress(),mapper.getAddress().getAddress());
List res = engine.execute(query,...);

Correspondent Pseudo QL

select name,surname,home.address from Person