|
From: snpe <sn...@sn...> - 2004-05-06 14:21:05
|
I have this error (methods with argument permanent object, not permanent class) : load, find work, but save, delete no)
Next version is tested and work all methods
I declare CatDaoImpl like :
bean id="catDao" class="org.springframework.orm.hibernate.support.BaseHibernateDao">
<property name="sessionFactory"><ref local="sessionFactory"/>
</property>
<property name="clazz">
<value>eg.Cat</value>
</property>
</bean>
and use like
BaseHibernateDao catDao = (BaseHibernateDao) ctx.getBean("catDao");
List cats = (List) catDao.loadAll();
Long id = new Long(3);
Cat cat = (Cat) catDao.load(id);
etc
We can change Dao on the fly (baseDao haven't to have clazz property) :
BaseHibernateDao baseDao = (BaseHibernateDao) ctx.getBean("baseDao");
baseDao = baseDao.setClazz(Dog.class);
List dogs = (List) baseDao.loadAll();
...
I can extends BaseHibernateDao and add new business methods (like Example Criteria)
It is possible exclude all named query method in helper class - it don't depends from permanent class
Regards
Code :
package org.springframework.orm.hibernate.support;
import java.io.Serializable;
import java.util.Collection;
import java.util.List;
import net.sf.hibernate.LockMode;
import net.sf.hibernate.type.Type;
import org.springframework.dao.DataAccessException;
import org.springframework.orm.hibernate.HibernateCallback;
public class BaseHibernateDao extends HibernateDaoSupport implements IBaseHibernateDao {
private Class clazz;
public void delete(Object obj,LockMode lockMode)
throws DataAccessException {
getHibernateTemplate().delete(obj,lockMode);
}
public void delete(Object obj) throws DataAccessException {
getHibernateTemplate().delete(obj);
}
public void deleteAll(Collection entities) throws DataAccessException {
getHibernateTemplate().deleteAll(entities);
}
public void evict(Object obj) throws DataAccessException {
getHibernateTemplate().evict(obj);
}
public Object execute(HibernateCallback action) throws DataAccessException {
return getHibernateTemplate().execute(action);
}
public List executeFind(HibernateCallback action)
throws DataAccessException {
return getHibernateTemplate().executeFind(action);
}
public List find(String queryString, Type type)
throws DataAccessException {
return getHibernateTemplate().find(queryString,clazz,type);
}
public List find(String queryString)
throws DataAccessException {
return getHibernateTemplate().find(queryString,clazz);
}
public List find(String queryString, Object[] values, Type[] types)
throws DataAccessException {
return getHibernateTemplate().find(queryString,values,types);
}
public List find(String queryString, Object[] values)
throws DataAccessException {
return getHibernateTemplate().find(queryString,values);
}
public List findByNamedQuery(String queryName, Object value, Type type)
throws DataAccessException {
return getHibernateTemplate().findByNamedQuery(queryName,value,type);
}
public List findByNamedQuery(String queryName, Object value)
throws DataAccessException {
return getHibernateTemplate().findByNamedQuery(queryName,value);
}
public List findByNamedQuery(String queryName, Object[] values, Type[] types)
throws DataAccessException {
return getHibernateTemplate().findByNamedQuery(queryName,values,types);
}
public List findByNamedQuery(String queryName, Object[] values)
throws DataAccessException {
return getHibernateTemplate().findByNamedQuery(queryName,values);
}
public List findByNamedQuery(String queryName, String paramName,
Object value, Type type) throws DataAccessException {
return getHibernateTemplate().findByNamedQuery(queryName,paramName,value,type);
}
public List findByNamedQuery(String queryName, String paramName,
Object value) throws DataAccessException {
return getHibernateTemplate().findByNamedQuery(queryName,paramName, value);
}
public List findByNamedQuery(String queryName, String[] paramNames,
Object[] values, Type[] types) throws DataAccessException {
return getHibernateTemplate().findByNamedQuery(queryName,paramNames, values,types);
}
public List findByNamedQuery(String queryName, String[] paramNames,
Object[] values) throws DataAccessException {
return getHibernateTemplate().findByNamedQuery(queryName,paramNames, values);
}
public List findByNamedQuery(String queryName) throws DataAccessException {
return getHibernateTemplate().findByNamedQuery(queryName);
}
public List findByNamedQueryAndValueBean(String queryName, Object valueBean)
throws DataAccessException {
return getHibernateTemplate().findByNamedQueryAndValueBean(queryName,valueBean);
}
public List findByValueBean(String queryString, Object valueBean)
throws DataAccessException {
return getHibernateTemplate().findByValueBean(queryString,valueBean);
}
public Object get(Serializable id, LockMode lockMode)
throws DataAccessException {
return getHibernateTemplate().get(clazz,id,lockMode);
}
public Object get( Serializable id)
throws DataAccessException {
return getHibernateTemplate().get(clazz,id);
}
public Object load( Serializable id, LockMode lockMode)
throws DataAccessException {
return getHibernateTemplate().load(clazz,id,lockMode);
}
public Object load(Serializable id)
throws DataAccessException {
return getHibernateTemplate().load(clazz,id);
}
public List loadAll() throws DataAccessException {
return getHibernateTemplate().loadAll(clazz);
}
public void lock(Object obj,LockMode lockMode)
throws DataAccessException {
getHibernateTemplate().lock(obj,lockMode);
}
public void save(Object obj,Serializable id) throws DataAccessException {
getHibernateTemplate().save(obj,id);
}
public Serializable save(Object obj) throws DataAccessException {
return getHibernateTemplate().save(obj);
}
public void saveOrUpdate(Object obj) throws DataAccessException {
getHibernateTemplate().saveOrUpdate(obj);
}
public Object saveOrUpdateCopy(Object obj) throws DataAccessException {
return getHibernateTemplate().saveOrUpdateCopy(obj);
}
public void update(Object obj,LockMode lockMode)
throws DataAccessException {
getHibernateTemplate().update(obj,lockMode);
}
public void update(Object obj) throws DataAccessException {
getHibernateTemplate().update(obj);
}
public BaseHibernateDao(Class clazz) {
super();
this.clazz = clazz;
}
public BaseHibernateDao () {
super();
}
public Class getClazz() {
return clazz;
}
public void setClazz(Class clazz) {
this.clazz = clazz;
}
}
/*
* Created on May 6, 2004
*
*/
package org.springframework.orm.hibernate.support;
import java.io.Serializable;
import java.util.Collection;
import java.util.List;
import net.sf.hibernate.LockMode;
import net.sf.hibernate.type.Type;
import org.springframework.dao.DataAccessException;
import org.springframework.orm.hibernate.HibernateCallback;
/**
* @author Haris Peco
*
* Snpe Informacioni sistemi
*/
public interface IBaseHibernateDao {
public abstract void delete(Object obj,LockMode lockMode) throws DataAccessException;
public abstract void delete(Object Obj) throws DataAccessException;
public abstract void deleteAll(Collection entities)
throws DataAccessException;
public abstract void evict(Object obj) throws DataAccessException;
public abstract Object execute(HibernateCallback action)
throws DataAccessException;
public abstract List executeFind(HibernateCallback action)
throws DataAccessException;
public abstract List find(String queryString, Type type)
throws DataAccessException;
public abstract List find(String queryString) throws DataAccessException;
public abstract List find(String queryString, Object[] values, Type[] types)
throws DataAccessException;
public abstract List find(String queryString, Object[] values)
throws DataAccessException;
public abstract List findByNamedQuery(String queryName, Object value,
Type type) throws DataAccessException;
public abstract List findByNamedQuery(String queryName, Object value)
throws DataAccessException;
public abstract List findByNamedQuery(String queryName, Object[] values,
Type[] types) throws DataAccessException;
public abstract List findByNamedQuery(String queryName, Object[] values)
throws DataAccessException;
public abstract List findByNamedQuery(String queryName, String paramName,
Object value, Type type) throws DataAccessException;
public abstract List findByNamedQuery(String queryName, String paramName,
Object value) throws DataAccessException;
public abstract List findByNamedQuery(String queryName,
String[] paramNames, Object[] values, Type[] types)
throws DataAccessException;
public abstract List findByNamedQuery(String queryName,
String[] paramNames, Object[] values) throws DataAccessException;
public abstract List findByNamedQuery(String queryName)
throws DataAccessException;
public abstract List findByNamedQueryAndValueBean(String queryName,
Object valueBean) throws DataAccessException;
public abstract List findByValueBean(String queryString, Object valueBean)
throws DataAccessException;
public abstract Object get(Serializable id, LockMode lockMode)
throws DataAccessException;
public abstract Object get(Serializable id) throws DataAccessException;
public abstract Object load(Serializable id, LockMode lockMode)
throws DataAccessException;
public abstract Object load(Serializable id) throws DataAccessException;
public abstract List loadAll() throws DataAccessException;
public abstract void lock(Object obj,LockMode lockMode) throws DataAccessException;
public abstract void save(Object obj,Serializable id) throws DataAccessException;
public abstract Serializable save(Object obj) throws DataAccessException;
public abstract void saveOrUpdate(Object obj) throws DataAccessException;
public abstract Object saveOrUpdateCopy(Object obj) throws DataAccessException;
public abstract void update(Object obj,LockMode lockMode) throws DataAccessException;
public abstract void update(Object obj) throws DataAccessException;
public abstract Class getClazz();
public abstract void setClazz(Class clazz);
}
|