HQL実践総括

2637 ワード


/**
	 *   HQL        HQL  
	 * @param queryString hql    
	 * @param parameters        (null     )
	 * @return
	 */
	protected List findByHqlQuery(final String queryString, final Object[] parameters) {
		if(null==parameters){
			return getHibernateTemplate().find(queryString);
		}else{
			return getHibernateTemplate().find(queryString, parameters);
		}
	}
	/**
	 *      HQL        
	 * @param queryString
	 * @param parameters
	 */
	protected void updateByQuery(final String queryString, final Object[] parameters) {
		getHibernateTemplate().execute(new HibernateCallback() {
			public Object doInHibernate(Session session) {
				Query query = session.createQuery(queryString);
				if (parameters != null) {
					for (int i = 0; i < parameters.length; i++) {
						query.setParameter(i, parameters[i]);
					}//--setParam
				}
				query.executeUpdate();
				session.flush();
				return null;
			}
		});
	}
	/**
	 *      HQL        
	 * @param queryString
	 * @param parameters
	 */
	protected void updateBySQLQuery(final String queryString, final Object[] parameters) {
		getHibernateTemplate().execute(new HibernateCallback() {
			public Object doInHibernate(Session session) {
				Query query = session.createSQLQuery(queryString);
				if (parameters != null) {
					for (int i = 0; i < parameters.length; i++) {
						query.setParameter(i, parameters[i]);
					}//--setParam
				}
				query.executeUpdate();
				session.flush();
				return null;
			}
		});
	}
	/**
	 *      HQL        
	 * @param queryString
	 * @param parameters
	 * @return Integer      
	 */
	protected Integer deleteByQuery(final String queryString, final Object[] parameters) {
		return (Integer) getHibernateTemplate().execute(new HibernateCallback() {
			public Object doInHibernate(Session session) {
				Query query = session.createQuery(queryString);
				if (parameters != null) {
					for (int i = 0; i < parameters.length; i++) {
						query.setParameter(i, parameters[i]);
					}
				}
				int rowNum = query.executeUpdate();
				session.flush();
				return new Integer(rowNum);
			}
		});
	}

よく使われるHql文
1)複数フィールドの値を更新する
update InOutAccount i set i.stateCode=? ,i.checkDate=? ,i.checkOperator=? where i.operNumber=?