/** * Add a mapped persistence-capable result with the given candidate type. */ public PCResult addPCResult(Class candidate) { _pcs = null; PCResult pc = new PCResult(candidate); if (_pcList == null) _pcList = new ArrayList(); _pcList.add(pc); return pc; }
/** * Resolve internal datastructures from raw mappings. */ private synchronized void resolve() { if (_rawMappings == null || _mappings != null) return; _mappings = new HashMap(); _fetchInfo = new FetchInfo(getCandidateTypeMapping()); Map.Entry entry; for (Iterator itr = _rawMappings.entrySet().iterator(); itr.hasNext();) { entry = (Map.Entry) itr.next(); resolveMapping((String) entry.getKey(), entry.getValue()); } }
ClassMapping candidate = getCandidateTypeMapping(); FieldMapping fm = null; for (int i = 0; i < tokens.length - 1; i++) { recordIncluded(candidate, rpath, fm); candidate = fm.getEmbeddedMapping(); } else Discriminator discrim = candidate.getDiscriminator(); rpath.add(discrim); assertSingleColumn(discrim.getColumns(), path); _mappings.put(rpath, new SingleColumnMap(id)); } else { QueryResultMapping.this, _candidate, path)); Column[] cols = last.getColumns(); assertSingleColumn(cols, path); Column col = cols[0]; addComplexColumnMapping(fm, rpath, col, id); return; addComplexColumnMapping(fm, new ArrayList(rpath), fkCol, id); else { recordEager(candidate, rpath, fm); recordIncluded(candidate, rpath, last); recordIncluded(candidate, rpath, last);
ClassMapping candidate = getCandidateTypeMapping(); FieldMapping fm = null; for (int i = 0; i < tokens.length - 1; i++) { recordIncluded(candidate, rpath, fm); candidate = fm.getEmbeddedMapping(); } else Discriminator discrim = candidate.getDiscriminator(); rpath.add(discrim); assertSingleColumn(discrim.getColumns(), path); _mappings.put(rpath, new SingleColumnMap(id)); } else { QueryResultMapping.this, _candidate, path)); Column[] cols = last.getColumns(); assertSingleColumn(cols, path); Column col = cols[0]; addComplexColumnMapping(fm, rpath, col, id); return; addComplexColumnMapping(fm, new ArrayList<MetaDataContext>(rpath), fkCol, id); else { recordEager(candidate, rpath, fm); recordIncluded(candidate, rpath, last); recordIncluded(candidate, rpath, last);
ClassMapping candidate = getCandidateTypeMapping(); FieldMapping fm = null; for (int i = 0; i < tokens.length - 1; i++) { recordIncluded(candidate, rpath, fm); candidate = fm.getEmbeddedMapping(); } else Discriminator discrim = candidate.getDiscriminator(); rpath.add(discrim); assertSingleColumn(discrim.getColumns(), path); _mappings.put(rpath, new SingleColumnMap(id)); } else { QueryResultMapping.this, _candidate, path)); Column[] cols = last.getColumns(); assertSingleColumn(cols, path); Column col = cols[0]; addComplexColumnMapping(fm, rpath, col, id); return; addComplexColumnMapping(fm, new ArrayList<MetaDataContext>(rpath), fkCol, id); else { recordEager(candidate, rpath, fm); recordIncluded(candidate, rpath, last); recordIncluded(candidate, rpath, last);
ClassMapping candidate = getCandidateTypeMapping(); FieldMapping fm = null; for (int i = 0; i < tokens.length - 1; i++) { recordIncluded(candidate, rpath, fm); candidate = fm.getEmbeddedMapping(); } else Discriminator discrim = candidate.getDiscriminator(); rpath.add(discrim); assertSingleColumn(discrim.getColumns(), path); _mappings.put(rpath, new SingleColumnMap(id)); } else { QueryResultMapping.this, _candidate, path)); Column[] cols = last.getColumns(); assertSingleColumn(cols, path); Column col = cols[0]; addComplexColumnMapping(fm, rpath, col, id); return; addComplexColumnMapping(fm, new ArrayList<MetaDataContext>(rpath), fkCol, id); else { recordEager(candidate, rpath, fm); recordIncluded(candidate, rpath, last); recordIncluded(candidate, rpath, last);
ClassMapping candidate = getCandidateTypeMapping(); FieldMapping fm = null; for (int i = 0; i < tokens.length - 1; i++) { recordIncluded(candidate, rpath, fm); candidate = fm.getEmbeddedMapping(); } else Discriminator discrim = candidate.getDiscriminator(); rpath.add(discrim); assertSingleColumn(discrim.getColumns(), path); _mappings.put(rpath, new SingleColumnMap(id)); } else { QueryResultMapping.this, _candidate, path)); Column[] cols = last.getColumns(); assertSingleColumn(cols, path); Column col = cols[0]; addComplexColumnMapping(fm, rpath, col, id); return; addComplexColumnMapping(fm, new ArrayList<MetaDataContext>(rpath), fkCol, id); else { recordEager(candidate, rpath, fm); recordIncluded(candidate, rpath, last); recordIncluded(candidate, rpath, last);
startElement("sql-result-set-mapping"); for (QueryResultMapping.PCResult pc : meta.getPCResults()) { addAttribute("entity-class", pc.getCandidateType().getName()); Object discrim = pc.getMapping(pc.DISCRIMINATOR); if (discrim != null) addAttribute("discriminator-column", discrim.toString()); for (String path : pc.getMappingPaths()) { addAttribute("name", path); addAttribute("column", pc.getMapping(path).toString()); startElement("field-result"); endElement("field-result");
newAnnotationBuilder(EntityResult.class); ab.add("entities", abEntRes); abEntRes.add("entityClass", pc.getCandidateType()); Object discrim = pc.getMapping(pc.DISCRIMINATOR); if (discrim != null) abEntRes.add("discriminatorColumn", discrim.toString()); for (String path : pc.getMappingPaths()) { AnnotationBuilder abFldRes = newAnnotationBuilder(FieldResult.class); abEntRes.add("fields", abFldRes); abFldRes.add("name", path); abFldRes.add("column", pc.getMapping(path).toString());
newAnnotationBuilder(EntityResult.class); ab.add("entities", abEntRes); abEntRes.add("entityClass", pc.getCandidateType()); Object discrim = pc.getMapping(pc.DISCRIMINATOR); if (discrim != null) abEntRes.add("discriminatorColumn", discrim.toString()); for (String path : pc.getMappingPaths()) { AnnotationBuilder abFldRes = newAnnotationBuilder(FieldResult.class); abEntRes.add("fields", abFldRes); abFldRes.add("name", path); abFldRes.add("column", pc.getMapping(path).toString());
startElement("sql-result-set-mapping"); for (QueryResultMapping.PCResult pc : meta.getPCResults()) { addAttribute("entity-class", pc.getCandidateType().getName()); Object discrim = pc.getMapping(pc.DISCRIMINATOR); if (discrim != null) addAttribute("discriminator-column", discrim.toString()); for (String path : pc.getMappingPaths()) { addAttribute("name", path); addAttribute("column", pc.getMapping(path).toString()); startElement("field-result"); endElement("field-result");
startElement("sql-result-set-mapping"); for (QueryResultMapping.PCResult pc : meta.getPCResults()) { addAttribute("entity-class", pc.getCandidateType().getName()); Object discrim = pc.getMapping(pc.DISCRIMINATOR); if (discrim != null) addAttribute("discriminator-column", discrim.toString()); for (String path : pc.getMappingPaths()) { addAttribute("name", path); addAttribute("column", pc.getMapping(path).toString()); startElement("field-result"); endElement("field-result");
newAnnotationBuilder(EntityResult.class); ab.add("entities", abEntRes); abEntRes.add("entityClass", pc.getCandidateType()); Object discrim = pc.getMapping(pc.DISCRIMINATOR); if (discrim != null) abEntRes.add("discriminatorColumn", discrim.toString()); for (String path : pc.getMappingPaths()) { AnnotationBuilder abFldRes = newAnnotationBuilder(FieldResult.class); abEntRes.add("fields", abFldRes); abFldRes.add("name", path); abFldRes.add("column", pc.getMapping(path).toString());
startElement("sql-result-set-mapping"); for (QueryResultMapping.PCResult pc : meta.getPCResults()) { addAttribute("entity-class", pc.getCandidateType().getName()); Object discrim = pc.getMapping(pc.DISCRIMINATOR); if (discrim != null) addAttribute("discriminator-column", discrim.toString()); for (String path : pc.getMappingPaths()) { addAttribute("name", path); addAttribute("column", pc.getMapping(path).toString()); startElement("field-result"); endElement("field-result");
newAnnotationBuilder(EntityResult.class); ab.add("entities", abEntRes); abEntRes.add("entityClass", pc.getCandidateType()); Object discrim = pc.getMapping(pc.DISCRIMINATOR); if (discrim != null) abEntRes.add("discriminatorColumn", discrim.toString()); for (String path : pc.getMappingPaths()) { AnnotationBuilder abFldRes = newAnnotationBuilder(FieldResult.class); abEntRes.add("fields", abFldRes); abFldRes.add("name", path); abFldRes.add("column", pc.getMapping(path).toString());
protected Object translate(Object obj, Joins joins) { return (_pc == null) ? obj : _pc.map(_requests, obj, joins); }
/** * Load an instance of the given type. Should be used in place of * {@link Result#load}. */ public Object load(QueryResultMapping.PCResult pc, JDBCStore store, JDBCFetchConfiguration fetch) throws SQLException { _pc = pc; try { return load(pc.getCandidateTypeMapping(), store, fetch); } finally { _pc = null; } }
protected Object translate(Object obj, Joins joins) { return (_pc == null) ? obj : _pc.map(_requests, obj, joins); }
protected Object translate(Object obj, Joins joins) { return (_pc == null) ? obj : _pc.map(_requests, obj, joins); }
protected Object getObjectInternal(Object obj, int metaTypeCode, Object arg, Joins joins) throws SQLException { if (obj instanceof Column){ Column col = (Column) obj; Object resultCol = _pc.getMapping(col.toString()); if (resultCol != null) { int javaType = col.getJavaType(); col = new Column(DBIdentifier.newColumn(resultCol.toString()), col.getTable()); col.setJavaType(javaType); } return _res.getObject(col, arg, joins); } return _res.getObject(obj, metaTypeCode, arg); }