📄 abstractqueryimpl.java
字号:
catch (MappingException me) { if (serializable) { return type; } else { throw new HibernateException("Could not determine a type for class: " + typename); } } return Hibernate.entity(clazz); } else { return type; } } 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) { Boolean valueToUse = val ? Boolean.TRUE : Boolean.FALSE; Type typeToUse = determineType( position, valueToUse, Hibernate.BOOLEAN ); setParameter( position, valueToUse, typeToUse ); 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 setText(int position, String val) { setParameter(position, val, Hibernate.TEXT); 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.entity( resolveEntityName( val ) ) ); return this; } private String resolveEntityName(Object val) { if ( val == null ) { throw new IllegalArgumentException( "entity for parameter binding cannot be null" ); } return session.bestGuessEntityName( val ); } 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 setText(String name, String val) { setParameter(name, val, Hibernate.TEXT); return this; } public Query setBoolean(String name, boolean val) { Boolean valueToUse = val ? Boolean.TRUE : Boolean.FALSE; Type typeToUse = determineType( name, valueToUse, Hibernate.BOOLEAN ); setParameter( name, valueToUse, typeToUse ); 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.entity( resolveEntityName( val ) ) ); 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 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 setBigInteger(int position, BigInteger number) { setParameter(position, number, Hibernate.BIG_INTEGER); return this; } public Query setBigInteger(String name, BigInteger number) { setParameter(name, number, Hibernate.BIG_INTEGER); return this; } public Query setParameterList(String name, Collection vals, Type type) throws HibernateException { if ( !parameterMetadata.getNamedParameterNames().contains( name ) ) { throw new IllegalArgumentException("Parameter " + name + " does not exist as a named parameter in [" + getQueryString() + "]"); } namedParameterLists.put( name, new TypedValue( type, vals, session.getEntityMode() ) ); return this; } /** * Warning: adds new parameters to the argument by side-effect, as well as * mutating the query string! */ protected String expandParameterLists(Map namedParamsCopy) { String query = this.queryString; Iterator iter = namedParameterLists.entrySet().iterator(); while ( iter.hasNext() ) { Map.Entry me = (Map.Entry) iter.next(); query = expandParameterList( query, (String) me.getKey(), (TypedValue) me.getValue(), namedParamsCopy ); } return query; } /** * Warning: adds new parameters to the argument by side-effect, as well as * mutating the query string! */ private String expandParameterList(String query, String name, TypedValue typedList, Map namedParamsCopy) { Collection vals = (Collection) typedList.getValue(); Type type = typedList.getType(); if ( vals.size() == 1 ) { // short-circuit for performance... namedParamsCopy.put( name, new TypedValue( type, vals.iterator().next(), session.getEntityMode() ) ); return query; } StringBuffer list = new StringBuffer( 16 ); Iterator iter = vals.iterator(); int i = 0; boolean isJpaPositionalParam = parameterMetadata.getNamedParameterDescriptor( name ).isJpaStyle(); while ( iter.hasNext() ) { String alias = ( isJpaPositionalParam ? 'x' + name : name ) + i++ + '_'; namedParamsCopy.put( alias, new TypedValue( type, iter.next(), session.getEntityMode() ) ); list.append( ParserHelper.HQL_VARIABLE_PREFIX ).append( alias ); if ( iter.hasNext() ) { list.append( ", " ); } } String paramPrefix = isJpaPositionalParam ? "?" : ParserHelper.HQL_VARIABLE_PREFIX; return StringHelper.replace( query, paramPrefix + name, list.toString(), true ); } public Query setParameterList(String name, Collection vals) throws HibernateException { if ( vals == null ) { throw new QueryException( "Collection must be not null!" ); } if( vals.size() == 0 ) { setParameterList( name, vals, null ); } else { setParameterList(name, vals, determineType( name, vals.iterator().next() ) ); } return this; } public Query setParameterList(String name, Object[] vals, Type type) throws HibernateException { return setParameterList( name, Arrays.asList(vals), type ); } public Query setParameterList(String name, Object[] vals) throws HibernateException { return setParameterList( name, Arrays.asList(vals) ); } public Query setProperties(Map map) throws HibernateException { String[] params = getNamedParameters(); for (int i = 0; i < params.length; i++) { String namedParam = params[i]; final Object object = map.get(namedParam); if(object==null) { continue; } Class retType = object.getClass(); if ( Collection.class.isAssignableFrom( retType ) ) { setParameterList( namedParam, ( Collection ) object ); } else if ( retType.isArray() ) { setParameterList( namedParam, ( Object[] ) object ); } else { setParameter( namedParam, object, determineType( namedParam, retType ) ); } } return this; } public Query setProperties(Object bean) throws HibernateException { Class clazz = bean.getClass(); String[] params = getNamedParameters(); for (int i = 0; i < params.length; i++) { String namedParam = params[i]; try { Getter getter = ReflectHelper.getGetter( clazz, namedParam ); Class retType = getter.getReturnType(); final Object object = getter.get( bean ); if ( Collection.class.isAssignableFrom( retType ) ) { setParameterList( namedParam, ( Collection ) object ); } else if ( retType.isArray() ) { setParameterList( namedParam, ( Object[] ) object ); } else { setParameter( namedParam, object, determineType( namedParam, retType ) ); } } catch (PropertyNotFoundException pnfe) { // ignore } } return this; } public Query setParameters(Object[] values, Type[] types) { this.values = Arrays.asList(values); this.types = Arrays.asList(types); return this; } // Execution methods ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ public Object uniqueResult() throws HibernateException { return uniqueElement( list() ); } static Object uniqueElement(List list) throws NonUniqueResultException { int size = list.size(); if (size==0) return null; Object first = list.get(0); for ( int i=1; i<size; i++ ) { if ( list.get(i)!=first ) { throw new NonUniqueResultException( list.size() ); } } return first; } protected RowSelection getRowSelection() { return selection; } public Type[] typeArray() { return ArrayHelper.toTypeArray( getTypes() ); } public Object[] valueArray() { return getValues().toArray(); } public QueryParameters getQueryParameters(Map namedParams) { return new QueryParameters( typeArray(), valueArray(), namedParams, getLockModes(), getSelection(), readOnly, cacheable, cacheRegion, comment, collectionKey == null ? null : new Serializable[] { collectionKey }, optionalObject, optionalEntityName, optionalId, resultTransformer ); } protected void before() { if ( flushMode!=null ) { sessionFlushMode = getSession().getFlushMode(); getSession().setFlushMode(flushMode); } if ( cacheMode!=null ) { sessionCacheMode = getSession().getCacheMode(); getSession().setCacheMode(cacheMode); } } protected void after() { if (sessionFlushMode!=null) { getSession().setFlushMode(sessionFlushMode); sessionFlushMode = null; } if (sessionCacheMode!=null) { getSession().setCacheMode(sessionCacheMode); sessionCacheMode = null; } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -