Revision ac5020e6
Added by Andreas Müller about 8 years ago
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/DefinedTermDaoImpl.java | ||
---|---|---|
568 | 568 |
} |
569 | 569 |
} |
570 | 570 |
|
571 |
List<T> results = query.list(); |
|
571 |
@SuppressWarnings("unchecked") |
|
572 |
List<T> results = query.list(); |
|
572 | 573 |
defaultBeanInitializer.initializeAll(results, propertyPaths); |
573 | 574 |
return results; |
574 | 575 |
} else { |
... | ... | |
610 | 611 |
query.setFirstResult(pageNumber * pageSize); |
611 | 612 |
} |
612 | 613 |
} |
613 |
List<T> r = query.list(); |
|
614 |
@SuppressWarnings("unchecked") |
|
615 |
List<T> r = query.list(); |
|
614 | 616 |
/** |
615 | 617 |
* For some weird reason, hibernate returns proxies (extending the superclass), not the actual class on this, |
616 | 618 |
* despite querying the damn database and returning the discriminator along with the rest of the object properties! |
... | ... | |
621 | 623 |
*/ |
622 | 624 |
List<T> results = new ArrayList<T>(); |
623 | 625 |
if(!definedTerms.isEmpty()) { |
624 |
Class<T> type = (Class<T>)definedTerms.iterator().next().getClass(); |
|
625 | 626 |
for(T t : r) { |
626 |
results.add(CdmBase.deproxy(t, type)); |
|
627 |
T deproxied = CdmBase.deproxy(t); |
|
628 |
results.add(deproxied); |
|
627 | 629 |
} |
628 | 630 |
defaultBeanInitializer.initializeAll(results, propertyPaths); |
629 | 631 |
} |
... | ... | |
636 | 638 |
if(auditEvent.equals(AuditEvent.CURRENT_VIEW)) { |
637 | 639 |
Query query = getSession().createQuery("select term from DefinedTermBase term where term.uri = :uri"); |
638 | 640 |
query.setParameter("uri", uri); |
639 |
return (DefinedTermBase)query.uniqueResult(); |
|
641 |
return (DefinedTermBase<?>)query.uniqueResult();
|
|
640 | 642 |
} else { |
641 | 643 |
AuditQuery query = getAuditReader().createQuery().forEntitiesAtRevision(DefinedTermBase.class,auditEvent.getRevisionNumber()); |
642 | 644 |
query.add(AuditEntity.property("uri").eq(uri)); |
643 |
return (DefinedTermBase)query.getSingleResult(); |
|
645 |
return (DefinedTermBase<?>)query.getSingleResult();
|
|
644 | 646 |
} |
645 | 647 |
} |
646 | 648 |
|
647 |
/* (non-Javadoc) |
|
648 |
* @see eu.etaxonomy.cdm.persistence.dao.common.IDefinedTermDao#listByTermType(eu.etaxonomy.cdm.model.common.TermType, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List) |
|
649 |
*/ |
|
650 | 649 |
@Override |
651 | 650 |
public <T extends DefinedTermBase> List<T> listByTermType(TermType termType, Integer limit, Integer start, |
652 | 651 |
List<OrderHint> orderHints, List<String> propertyPaths) { |
653 | 652 |
Query query = getSession().createQuery("select term from DefinedTermBase term where term.termType = :termType"); |
654 | 653 |
query.setParameter("termType", termType); |
655 | 654 |
|
656 |
List result = query.list(); |
|
655 |
List<T> result = query.list();
|
|
657 | 656 |
|
658 | 657 |
defaultBeanInitializer.initializeAll(result, propertyPaths); |
659 | 658 |
|
Also available in: Unified diff
Fix CCE in DefinedTermDaoImpl.getPartOf (#5556) and make deproxy more
generic