Jakie jest zastosowanie metody setResultTransformer w API kryteriów? Czy ktoś może to wyjaśnić na prostym przykładzie? Czytam javadocs, ale nie jestem w stanie ich jasno zrozumieć.setResultTransformer w kryteriach
Pozdrawiam,
Jakie jest zastosowanie metody setResultTransformer w API kryteriów? Czy ktoś może to wyjaśnić na prostym przykładzie? Czytam javadocs, ale nie jestem w stanie ich jasno zrozumieć.setResultTransformer w kryteriach
Pozdrawiam,
Domyślna ResultTransformer dla zapytania kryteriów, które nie używają setProjections() będzie ROOT_ENTITY
.
Jeśli mamy student w relacji ManyToMany do Departamentu kwerenda może wyglądać tak ...
Session session = (Session) getEntityManager().getDelegate();
Criteria crit = session.createCriteria(Student.class)
.createAlias('departments', 'department');
To zapytanie zwróci duplikatów. Ale ustawić ResultTransformer
jako ...
crit.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);
teraz wyniki będą różnić się podczas hibernacji marszałkowie wyniki. (Albo mam na myśli unmarshalls?)
Jeśli nie chcesz hibernacji, aby powrócić do zapytania jako List<Student>
ale wolą obsługiwać wyniki jako List<Object[]>
następnie
crit.setResultTransformer(CriteriaSpecification.PROJECTION)
prosto: jeśli robisz Critera : chcesz resultset być w szczególności przedmiotem jest można go używać jak: np:
.setResultTransformer(Transformers.aliasToBean(Employee.class));
Employee
powinna odpowiadać ResultSet
podmiotu.
To działało idealnie! – normalUser
Działa jak urok. Dobra wskazówka. Dzięki – niarb
Z dokumentu, widzę to wyrażenie dla ROOT_ALIAS: alias, który odnosi się do elementu "root" zapytania kryteriów. Co oznacza termin "root" w tym przypadku? Nie jestem w stanie zrozumieć, co root odnosi się w tym przypadku. Proszę wytłumacz. – user182944
"root" oznacza dowolną klasę użytą podczas tworzenia instancji Criteria. W moim przykładzie root to Student. Wyniki zostaną zwrócone przez wywołanie metody crit.list() jako listy obiektów Uczniów. O ile nie poprosisz o ResultTransformation jako PROJECTION, w takim przypadku będzie to lista obiektów Object. (Edytuję również mój oryginalny przykład, aby usunąć ograniczenie, aby zapytanie zwróciło duplikaty.) – carbontax