Update of /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/impl In directory sc8-pr-cvs1:/tmp/cvs-serv2690/sf/hibernate/impl Modified Files: QueryImpl.java ScheduledEntityAction.java SessionFactoryImpl.java SessionImpl.java Log Message: made Query methods return this to allow chaining added experimental find(Class, Map) improved parsing of query imports, etc fixed a bug in PS handling Index: QueryImpl.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/impl/QueryImpl.java,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** QueryImpl.java 2 Mar 2003 09:02:39 -0000 1.8 --- QueryImpl.java 4 Mar 2003 10:53:46 -0000 1.9 *************** *** 69,85 **** } ! public void setMaxResults(int maxResults) { selection.setMaxRows(new Integer(maxResults)); } ! public void setTimeout(int timeout) { selection.setTimeout(new Integer(timeout)); } ! public void setFirstResult(int firstResult) { selection.setFirstRow(new Integer(firstResult)); } ! public void setParameter(int position, Object val, Type type) { int size = values.size(); if ( position<size ) { --- 69,88 ---- } ! public Query setMaxResults(int maxResults) { selection.setMaxRows(new Integer(maxResults)); + return this; } ! public Query setTimeout(int timeout) { selection.setTimeout(new Integer(timeout)); + return this; } ! public Query setFirstResult(int firstResult) { selection.setFirstRow(new Integer(firstResult)); + return this; } ! public Query setParameter(int position, Object val, Type type) { int size = values.size(); if ( position<size ) { *************** *** 95,270 **** types.add(type); } } ! public void setString(int position, String val) { setParameter(position, val, Hibernate.STRING); } ! public void setCharacter(int position, char val) { setParameter(position, new Character(val), Hibernate.CHARACTER); } ! public void setBoolean(int position, boolean val) { setParameter(position, new Boolean(val), Hibernate.BOOLEAN); } ! public void setByte(int position, byte val) { setParameter(position, new Byte(val), Hibernate.BYTE); } ! public void setShort(int position, short val) { setParameter(position, new Short(val), Hibernate.SHORT); } ! public void setInteger(int position, int val) { setParameter(position, new Integer(val), Hibernate.INTEGER); } ! public void setLong(int position, long val) { setParameter(position, new Long(val), Hibernate.LONG); } ! public void setFloat(int position, float val) { setParameter(position, new Float(val), Hibernate.FLOAT); } ! public void setDouble(int position, double val) { setParameter(position, new Double(val), Hibernate.DOUBLE); } ! public void setBinary(int position, byte[] val) { setParameter(position, val, Hibernate.BINARY); } ! public void setSerializable(int position, Serializable val) { setParameter(position, val, Hibernate.SERIALIZABLE); } ! public void setDate(int position, Date date) { setParameter(position, date, Hibernate.DATE); } ! public void setTime(int position, Date date) { setParameter(position, date, Hibernate.TIME); } ! public void setTimestamp(int position, Date date) { setParameter(position, date, Hibernate.TIMESTAMP); } ! public void setEntity(int position, Object val) { setParameter( position, val, Hibernate.association( val.getClass() ) ); } ! public void setEnum(int position, Object val) throws MappingException { setParameter( position, val, Hibernate.enum( val.getClass() ) ); } ! public void setLocale(int position, Locale locale) { setParameter(position, locale, Hibernate.LOCALE); } ! public void setCalendar(int position, Calendar calendar) { setParameter(position, calendar, Hibernate.CALENDAR); } ! public void setCalendarDate(int position, Calendar calendar) { setParameter(position, calendar, Hibernate.CALENDAR_DATE); } ! public void setBinary(String name, byte[] val) { setParameter(name, val, Hibernate.BINARY); } ! public void setBoolean(String name, boolean val) { setParameter(name, new Boolean(val), Hibernate.BOOLEAN); } ! public void setByte(String name, byte val) { setParameter(name, new Byte(val), Hibernate.BYTE); } ! public void setCharacter(String name, char val) { setParameter(name, new Character(val), Hibernate.CHARACTER); } ! public void setDate(String name, Date date) { setParameter(name, date, Hibernate.DATE); } ! public void setDouble(String name, double val) { setParameter(name, new Double(val), Hibernate.DOUBLE); } ! public void setEntity(String name, Object val) { setParameter( name, val, Hibernate.association( val.getClass() ) ); } ! public void setEnum(String name, Object val) throws MappingException { setParameter( name, val, Hibernate.enum( val.getClass() ) ); } ! public void setFloat(String name, float val) { setParameter(name, new Float(val), Hibernate.FLOAT); } ! public void setInteger(String name, int val) { setParameter(name, new Integer(val), Hibernate.INTEGER); } ! public void setLocale(String name, Locale locale) { setParameter(name, locale, Hibernate.LOCALE); } ! public void setCalendar(String name, Calendar calendar) { setParameter(name, calendar, Hibernate.CALENDAR); } ! public void setCalendarDate(String name, Calendar calendar) { setParameter(name, calendar, Hibernate.CALENDAR_DATE); } ! public void setLong(String name, long val) { setParameter(name, new Long(val), Hibernate.LONG); } ! public void setParameter(String name, Object val, Type type) { namedParameters.put(name, new TypedValue(type, val) ); } ! public void setSerializable(String name, Serializable val) { setParameter(name, val, Hibernate.SERIALIZABLE); } ! public void setShort(String name, short val) { setParameter(name, new Short(val), Hibernate.SHORT); } ! public void setString(String name, String val) { setParameter(name, val, Hibernate.STRING); } ! public void setTime(String name, Date date) { setParameter(name, date, Hibernate.TIME); } ! public void setTimestamp(String name, Date date) { setParameter(name, date, Hibernate.TIMESTAMP); } ! public void setBigDecimal(int position, BigDecimal number) { setParameter(position, number, Hibernate.BIG_DECIMAL); } ! public void setBigDecimal(String name, BigDecimal number) { setParameter(name, number, Hibernate.BIG_DECIMAL); } ! public void setParameter(int position, Object val) throws HibernateException { setParameter( position, val, guessType(val) ); } ! public void setParameter(String name, Object val) throws HibernateException { setParameter( name, val, guessType(val) ); } --- 98,317 ---- types.add(type); } + return this; } ! public Query setString(int position, String val) { setParameter(position, val, Hibernate.STRING); + return this; } ! public Query setCharacter(int position, char val) { setParameter(position, new Character(val), Hibernate.CHARACTER); + return this; } ! public Query setBoolean(int position, boolean val) { setParameter(position, new Boolean(val), Hibernate.BOOLEAN); + return this; } ! public Query setByte(int position, byte val) { setParameter(position, new Byte(val), Hibernate.BYTE); + return this; } ! public Query setShort(int position, short val) { setParameter(position, new Short(val), Hibernate.SHORT); + return this; } ! public Query setInteger(int position, int val) { setParameter(position, new Integer(val), Hibernate.INTEGER); + return this; } ! public Query setLong(int position, long val) { setParameter(position, new Long(val), Hibernate.LONG); + return this; } ! public Query setFloat(int position, float val) { setParameter(position, new Float(val), Hibernate.FLOAT); + return this; } ! public Query setDouble(int position, double val) { setParameter(position, new Double(val), Hibernate.DOUBLE); + return this; } ! public Query setBinary(int position, byte[] val) { setParameter(position, val, Hibernate.BINARY); + return this; } ! public Query setSerializable(int position, Serializable val) { setParameter(position, val, Hibernate.SERIALIZABLE); + return this; } ! public Query setDate(int position, Date date) { setParameter(position, date, Hibernate.DATE); + return this; } ! public Query setTime(int position, Date date) { setParameter(position, date, Hibernate.TIME); + return this; } ! public Query setTimestamp(int position, Date date) { setParameter(position, date, Hibernate.TIMESTAMP); + return this; } ! public Query setEntity(int position, Object val) { setParameter( position, val, Hibernate.association( val.getClass() ) ); + return this; } ! public Query setEnum(int position, Object val) throws MappingException { setParameter( position, val, Hibernate.enum( val.getClass() ) ); + return this; } ! public Query setLocale(int position, Locale locale) { setParameter(position, locale, Hibernate.LOCALE); + return this; } ! public Query setCalendar(int position, Calendar calendar) { setParameter(position, calendar, Hibernate.CALENDAR); + return this; } ! public Query setCalendarDate(int position, Calendar calendar) { setParameter(position, calendar, Hibernate.CALENDAR_DATE); + return this; } ! public Query setBinary(String name, byte[] val) { setParameter(name, val, Hibernate.BINARY); + return this; } ! public Query setBoolean(String name, boolean val) { setParameter(name, new Boolean(val), Hibernate.BOOLEAN); + return this; } ! public Query setByte(String name, byte val) { setParameter(name, new Byte(val), Hibernate.BYTE); + return this; } ! public Query setCharacter(String name, char val) { setParameter(name, new Character(val), Hibernate.CHARACTER); + return this; } ! public Query setDate(String name, Date date) { setParameter(name, date, Hibernate.DATE); + return this; } ! public Query setDouble(String name, double val) { setParameter(name, new Double(val), Hibernate.DOUBLE); + return this; } ! public Query setEntity(String name, Object val) { setParameter( name, val, Hibernate.association( val.getClass() ) ); + return this; } ! public Query setEnum(String name, Object val) throws MappingException { setParameter( name, val, Hibernate.enum( val.getClass() ) ); + return this; } ! public Query setFloat(String name, float val) { setParameter(name, new Float(val), Hibernate.FLOAT); + return this; } ! public Query setInteger(String name, int val) { setParameter(name, new Integer(val), Hibernate.INTEGER); + return this; } ! public Query setLocale(String name, Locale locale) { setParameter(name, locale, Hibernate.LOCALE); + return this; } ! public Query setCalendar(String name, Calendar calendar) { setParameter(name, calendar, Hibernate.CALENDAR); + return this; } ! public Query setCalendarDate(String name, Calendar calendar) { setParameter(name, calendar, Hibernate.CALENDAR_DATE); + return this; } ! public Query setLong(String name, long val) { setParameter(name, new Long(val), Hibernate.LONG); + return this; } ! public Query setParameter(String name, Object val, Type type) { namedParameters.put(name, new TypedValue(type, val) ); + return this; } ! public Query setSerializable(String name, Serializable val) { setParameter(name, val, Hibernate.SERIALIZABLE); + return this; } ! public Query setShort(String name, short val) { setParameter(name, new Short(val), Hibernate.SHORT); + return this; } ! public Query setString(String name, String val) { setParameter(name, val, Hibernate.STRING); + return this; } ! public Query setTime(String name, Date date) { setParameter(name, date, Hibernate.TIME); + return this; } ! public Query setTimestamp(String name, Date date) { setParameter(name, date, Hibernate.TIMESTAMP); + return this; } ! public Query setBigDecimal(int position, BigDecimal number) { setParameter(position, number, Hibernate.BIG_DECIMAL); + return this; } ! public Query setBigDecimal(String name, BigDecimal number) { setParameter(name, number, Hibernate.BIG_DECIMAL); + return this; } ! public Query setParameter(int position, Object val) throws HibernateException { setParameter( position, val, guessType(val) ); + return this; } ! public Query setParameter(String name, Object val) throws HibernateException { setParameter( name, val, guessType(val) ); + return this; } *************** *** 294,299 **** } ! public void setParameterList(String name, Collection vals, Type type) throws HibernateException { namedParameterLists.put( name, new TypedValue(type, vals) ); } --- 341,347 ---- } ! public Query setParameterList(String name, Collection vals, Type type) throws HibernateException { namedParameterLists.put( name, new TypedValue(type, vals) ); + return this; } *************** *** 325,330 **** ! public void setParameterList(String name, Collection vals) throws HibernateException { setParameterList(name, vals, guessType( vals.iterator().next() ) ); } --- 373,379 ---- ! public Query setParameterList(String name, Collection vals) throws HibernateException { setParameterList(name, vals, guessType( vals.iterator().next() ) ); + return this; } *************** *** 333,337 **** } ! public void setProperties(Object bean) throws HibernateException { Class clazz = bean.getClass(); Iterator iter = session.getFactory().getNamedParameters(queryString).iterator(); --- 382,386 ---- } ! public Query setProperties(Object bean) throws HibernateException { Class clazz = bean.getClass(); Iterator iter = session.getFactory().getNamedParameters(queryString).iterator(); *************** *** 344,347 **** --- 393,397 ---- catch (PropertyNotFoundException pnfe) {} } + return this; } Index: ScheduledEntityAction.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/impl/ScheduledEntityAction.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** ScheduledEntityAction.java 2 Feb 2003 04:19:51 -0000 1.4 --- ScheduledEntityAction.java 4 Mar 2003 10:53:46 -0000 1.5 *************** *** 26,30 **** public final Serializable[] getPropertySpaces() { ! return persister.getPropertySpaces(instance); } --- 26,30 ---- public final Serializable[] getPropertySpaces() { ! return persister.getPropertySpaces(); } Index: SessionFactoryImpl.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/impl/SessionFactoryImpl.java,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** SessionFactoryImpl.java 22 Feb 2003 06:42:07 -0000 1.13 --- SessionFactoryImpl.java 4 Mar 2003 10:53:46 -0000 1.14 *************** *** 267,274 **** //Queries: ! querySubstitutions = PropertiesHelper.toMap(Environment.QUERY_SUBSTITUTIONS, " ,=;:", properties); log.info("Query language substitutions: " + querySubstitutions); ! queryImports = PropertiesHelper.toStringArray(Environment.QUERY_IMPORTS, " ,;:", properties); if ( queryImports.length!=0 ) log.info( "Query language imports: " + StringHelper.toString(queryImports) ); --- 267,274 ---- //Queries: ! querySubstitutions = PropertiesHelper.toMap(Environment.QUERY_SUBSTITUTIONS, " ,=;:\n\t\r\f", properties); log.info("Query language substitutions: " + querySubstitutions); ! queryImports = PropertiesHelper.toStringArray(Environment.QUERY_IMPORTS, " ,;:\n\t\r\f", properties); if ( queryImports.length!=0 ) log.info( "Query language imports: " + StringHelper.toString(queryImports) ); *************** *** 540,545 **** public void closePreparedStatement(PreparedStatement ps) throws SQLException { if (statementCache!=null) { - ps.setMaxRows(0); - ps.setFetchSize(0); statementCache.closePreparedStatement(ps); } --- 540,543 ---- Index: SessionImpl.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/impl/SessionImpl.java,v retrieving revision 1.22 retrieving revision 1.23 diff -C2 -d -r1.22 -r1.23 *** SessionImpl.java 19 Feb 2003 02:02:10 -0000 1.22 --- SessionImpl.java 4 Mar 2003 10:53:46 -0000 1.23 *************** *** 52,56 **** --- 52,58 ---- import net.sf.hibernate.collection.ArrayHolder; import net.sf.hibernate.engine.*; + import net.sf.hibernate.loader.SearchLoader; import net.sf.hibernate.persister.ClassPersister; + import net.sf.hibernate.persister.Loadable; import net.sf.hibernate.proxy.*; import net.sf.hibernate.hql.QueryTranslator; *************** *** 2844,2847 **** --- 2846,2884 ---- } + public List find(Class persistentClass, Map propertyNameValues) + throws HibernateException { + + if ( log.isTraceEnabled() ) { + log.trace( "search: " + persistentClass.getName() ); + log.trace( "properties: " + propertyNameValues ); + } + + String[] propertyNames = new String[ propertyNameValues.size() ]; + Iterator iter = propertyNameValues.keySet().iterator(); + for ( int i=0; i<propertyNameValues.size(); i++ ) { + propertyNames[i] = (String) iter.next(); + } + Loadable persister = (Loadable) getPersister(persistentClass); + SearchLoader loader = new SearchLoader(persister, factory, propertyNames); + + Serializable[] spaces = persister.getPropertySpaces(); + Set set = new HashSet(); + for (int i=0; i<spaces.length; i++) set.add( spaces[i] ); + autoFlushIfRequired(set); + + dontFlushFromFind++; + try { + return loader.list(this, propertyNameValues); + } + catch (SQLException sqle) { + throw new JDBCException(sqle); + } + finally { + dontFlushFromFind--; + } + + } + + } |