From: <one...@us...> - 2003-03-16 01:45:55
|
Update of /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/collection In directory sc8-pr-cvs1:/tmp/cvs-serv21387/src/net/sf/hibernate/collection Modified Files: CollectionPersister.java PersistentCollection.java Log Message: fixed problem loading one-to-many in Sybase alias length limitation for collection columns added force attribute to <discriminator> better handling of 'null' discriminators Index: CollectionPersister.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/collection/CollectionPersister.java,v retrieving revision 1.15 retrieving revision 1.16 diff -C2 -d -r1.15 -r1.16 *** CollectionPersister.java 15 Mar 2003 04:38:15 -0000 1.15 --- CollectionPersister.java 16 Mar 2003 01:45:52 -0000 1.16 *************** *** 27,30 **** --- 27,31 ---- import net.sf.hibernate.mapping.Table; import net.sf.hibernate.metadata.CollectionMetadata; + import net.sf.hibernate.sql.Alias; import net.sf.hibernate.sql.Delete; import net.sf.hibernate.sql.Insert; *************** *** 66,73 **** private final String[] keyColumnNames; private final String[] indexColumnNames; - private final String[] unquotedIndexColumnNames; private final String[] elementColumnNames; private final String[] unquotedElementColumnNames; private final String[] rowSelectColumnNames; private final Type rowSelectType; private final boolean primitiveArray; --- 67,76 ---- private final String[] keyColumnNames; private final String[] indexColumnNames; private final String[] elementColumnNames; + private final String[] unquotedIndexColumnNames; private final String[] unquotedElementColumnNames; private final String[] rowSelectColumnNames; + private final String[] indexColumnAliases; + private final String[] elementColumnAliases; private final Type rowSelectType; private final boolean primitiveArray; *************** *** 91,95 **** private static final Log log = LogFactory.getLog(CollectionPersister.class); ! public CollectionPersister(Collection collection, Configuration datastore, SessionFactoryImplementor factory) throws MappingException, CacheException { collectionType = collection.getType(); --- 94,99 ---- private static final Log log = LogFactory.getLog(CollectionPersister.class); ! public CollectionPersister(Collection collection, Configuration datastore, SessionFactoryImplementor factory) ! throws MappingException, CacheException { collectionType = collection.getType(); *************** *** 120,123 **** --- 124,128 ---- array = collection.isArray(); + Table table; if (isOneToMany) { EntityType type = collection.getOneToMany().getType(); *************** *** 125,157 **** PersistentClass associatedClass = datastore.getClassMapping( type.getPersistentClass() ); span = associatedClass.getIdentifier().getColumnSpan(); - elementColumnNames = new String[span]; iter = associatedClass.getKey().getColumnIterator(); ! int j=0; ! while ( iter.hasNext() ) { ! Column col = (Column) iter.next(); ! elementColumnNames[j] = col.getName(); ! j++; ! } ! Table table = associatedClass.getTable(); ! qualifiedTableName = table.getQualifiedName( factory.getDefaultSchema() ); enableJoinedFetch = OuterJoinLoader.EAGER; } else { ! Table table = collection.getTable(); ! qualifiedTableName = table.getQualifiedName( factory.getDefaultSchema() ); elementType = collection.getElement().getType(); span = collection.getElement().getColumnSpan(); ! elementColumnNames = new String[span]; ! enableJoinedFetch = collection.getElement().getOuterJoinFetchSetting(); ! iter = collection.getElement().getColumnIterator(); - int i= 0; - while ( iter.hasNext() ) { - Column col = (Column) iter.next(); - elementColumnNames[i] = col.getName(); - i++; - } } ! unquotedElementColumnNames = StringHelper.unQuote(elementColumnNames); --- 130,159 ---- PersistentClass associatedClass = datastore.getClassMapping( type.getPersistentClass() ); span = associatedClass.getIdentifier().getColumnSpan(); iter = associatedClass.getKey().getColumnIterator(); ! table = associatedClass.getTable(); enableJoinedFetch = OuterJoinLoader.EAGER; } else { ! table = collection.getTable(); elementType = collection.getElement().getType(); span = collection.getElement().getColumnSpan(); ! enableJoinedFetch = collection.getElement().getOuterJoinFetchSetting(); iter = collection.getElement().getColumnIterator(); } ! ! qualifiedTableName = table.getQualifiedName( factory.getDefaultSchema() ); ! String[] aliases = new String[span]; ! elementColumnNames = new String[span]; ! int j=0; ! while ( iter.hasNext() ) { ! Column col = (Column) iter.next(); ! elementColumnNames[j] = col.getName(); ! aliases[j] = col.getAlias(); ! j++; ! } ! ! Alias alias = new Alias("__"); ! elementColumnAliases = alias.toAliasStrings(aliases); ! unquotedElementColumnNames = StringHelper.unQuote(elementColumnAliases); *************** *** 169,177 **** rowSelectColumnNames = indexColumnNames; rowSelectType = indexType; ! unquotedIndexColumnNames = StringHelper.unQuote(indexColumnNames); } else { indexType = null; indexColumnNames = null; unquotedIndexColumnNames = null; rowSelectColumnNames = elementColumnNames; --- 171,181 ---- rowSelectColumnNames = indexColumnNames; rowSelectType = indexType; ! indexColumnAliases = alias.toAliasStrings(indexColumnNames); ! unquotedIndexColumnNames = StringHelper.unQuote(indexColumnAliases); } else { indexType = null; indexColumnNames = null; + indexColumnAliases = null; unquotedIndexColumnNames = null; rowSelectColumnNames = elementColumnNames; *************** *** 368,373 **** SelectFragment frag = new SelectFragment() .setSuffix(StringHelper.EMPTY_STRING) ! .addColumns(alias, elementColumnNames); ! if (hasIndex) frag.addColumns(alias, indexColumnNames); return frag.toFragmentString() .substring(2); //strip leading ',' --- 372,377 ---- SelectFragment frag = new SelectFragment() .setSuffix(StringHelper.EMPTY_STRING) ! .addColumns(alias, elementColumnNames, elementColumnAliases); ! if (hasIndex) frag.addColumns(alias, indexColumnNames, indexColumnAliases); return frag.toFragmentString() .substring(2); //strip leading ',' Index: PersistentCollection.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/collection/PersistentCollection.java,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** PersistentCollection.java 6 Mar 2003 11:12:11 -0000 1.9 --- PersistentCollection.java 16 Mar 2003 01:45:52 -0000 1.10 *************** *** 166,171 **** public abstract void readEntries(Iterator entries); public abstract Object readFrom(ResultSet rs, CollectionPersister role, Object owner) throws HibernateException, SQLException; ! public abstract void writeTo(PreparedStatement st, CollectionPersister role, Object entry, int i, boolean writeOrder) ! throws HibernateException, SQLException; public abstract Object getIndex(Object entry, int i); public abstract void beforeInitialize(CollectionPersister persister); --- 166,170 ---- public abstract void readEntries(Iterator entries); public abstract Object readFrom(ResultSet rs, CollectionPersister role, Object owner) throws HibernateException, SQLException; ! public abstract void writeTo(PreparedStatement st, CollectionPersister role, Object entry, int i, boolean writeOrder) throws HibernateException, SQLException; public abstract Object getIndex(Object entry, int i); public abstract void beforeInitialize(CollectionPersister persister); |