读书人

Spring配置错误BaseDAOlt;Tgt;类型怎么配

发布时间: 2013-09-10 13:42:18 作者: rapoo

Spring配置异常,BaseDAO<T>类型如何配置。
我就很纳闷不知道为什么会出错,请大家看一眼。
IBaseDAO接口。


public interface IBaseDAO<T, ID extends Serializable> {

public T findById(ID id);

public T findById(Class c, ID id);
}

BaseDAO实现类

public class BaseDAO<T, ID extends Serializable> extends HibernateDaoSupport implements IBaseDAO<T, ID> {
private Class<T> persistentClass;

@SuppressWarnings("unchecked")
public BaseDAO(Class clazz) {
this.persistentClass = clazz;
}
public T findById(ID id){
return null;
}

public T findById(Class c, ID id){
System.out.println("进来了");
return null;
}

//getter && setter
public Class<T> getPersistentClass() {
return persistentClass;
}
public void setPersistentClass(Class<T> persistentClass) {
this.persistentClass = persistentClass;
}
}


UserDAO接口

public interface IBaseUserDAO {
public void findById(String id);
}


UserDAO实现。

@SuppressWarnings("unchecked")
public class BaseUserDAO extends BaseDAO implements IBaseUserDAO {

private BaseDAO baseDao;

public BaseUserDAO(String clazz) throws ClassNotFoundException {
//Class.forName("BaseDAOTest");
//System.out.println(clazz);
super(Class.forName("cn.aozer.armsweb.entity.Users"));
}

public void findById(String id) {
System.out.println("User DAO");
Users u = (Users)this.findById(Users.class,id);
System.out.println(u.getUsername());
System.out.println(u.getPassword());
}

public BaseDAO getBaseDao() {
return baseDao;
}

public void setBaseDao(BaseDAO baseDao) {
this.baseDao = baseDao;
}
}


最后是spring、配置文件

<bean id="baseDao" class="test.BaseDAO" >
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<bean id="baseUser" class="test.BaseDAOTestForUserDAO" parent="baseDao">


<property name="baseDao" ref="baseDao"></property>
</bean>



在没有添加这些代码之前运行时没有问题的。。。现在不行了。。。

求指教,是因为<T>的源码?还是因为继承的关系啊...

我就不明白了...

启动就报错...

求指教...

[解决办法]
我知道错误在哪里了.
这里你用了一个有参构造,没有生命无惨构造,
需要显示声明有无惨构造才行.

public class BaseDAO<T, ID extends Serializable> extends HibernateDaoSupport implements IBaseDAO<T, ID> {
private Class<T> persistentClass;

@SuppressWarnings("unchecked")
public BaseDAO(Class clazz) {
this.persistentClass = clazz;
}

读书人网 >J2EE开发

热点推荐