exiashna 2015-05-02 02:55 采纳率: 0%
浏览 2840

@Resource("userDao")出现 属性值是未定义类型 错误提示

import javax.annotation.Resource;
import org.springframework.stereotype.Service;

import com.kfz.surveypark.dao.BaseDao;
import com.kfz.surveypark.model.User;
import com.kfz.surveypark.service.UserService;

@Service("userService")
public class UserServiceImpl extends BaseServiceImplimplements UserService{

@Resource(value="userDao")
public void setDao(BaseDao<User> dao) {
    super.setDao(dao);
}

}
以下是 BaseServiceImpl,BaseDaoImpl
import java.util.List;
import javax.annotation.Resource;
import com.kfz.surveypark.dao.BaseDao;
import com.kfz.surveypark.service.BaseService;

public abstract class BaseServiceImpl implements BaseService {

private BaseDao<T> dao;

//注入dao
@Resource
public void setDao(BaseDao dao) {
this.dao = dao;
}

@Override
public void saveEntity(T t) {
    dao.saveEntity(t);

}


@Override
public void deleteEntity(T t) {
    dao.deleteEntity(t);;

}
@Override
public void saveOrUpdateEntity(T t) {
    dao.saveOrUpdateEntity(t);

}

@Override
public void updateEntity(T t) {
    dao.updateEntity(t);

}

@Override
public void batchEntityByHQL(String hql, Object... objects) {
    dao.batchEntityByHQL(hql, objects);

}

@Override
public T loadEntity(Integer id) {

    return dao.loadEntity(id);
}

@Override
public T getEntity(Integer id) {

    return dao.getEntity(id);
}

@Override
public List<T> findEntityByHQL(String hql, Object... objects) {

    return dao.findEntityByHQL(hql, objects);
}
}

BaseDaoImpl类
import java.lang.reflect.ParameterizedType;

import java.util.List;
import javax.annotation.Resource;
import org.hibernate.Query;
import org.hibernate.SessionFactory;

import com.kfz.surveypark.dao.BaseDao;
/*

  • 抽象的实现, / @SuppressWarnings("unchecked") public abstract class BaseDaoImpl implements BaseDao{ //注入 SessionFactory @Resource private SessionFactory sf; /*
  • 利用反射得到 T 实例对象 如,User, Survey
  • */
    private Class clazz;

    public BaseDaoImpl(){
    ParameterizedType pt=(ParameterizedType) this.getClass().getGenericSuperclass();
    clazz=(Class)pt.getActualTypeArguments()[0];
    }

    @Override
    public void saveEntity(T t) {
    sf.getCurrentSession();
    }

    @Override
    public void deleteEntity(T t) {
    sf.getCurrentSession();

    }
    @Override
    public void saveOrUpdateEntity(T t) {
    sf.getCurrentSession();
    }

    @Override
    public void updateEntity(T t) {
    sf.getCurrentSession();

    }

    @Override
    public void batchEntityByHQL(String hql, Object... objects) {
    Query q=sf.getCurrentSession().createQuery(hql);
    for(int i=0;i<objects.length;i++){
    q.setParameter(i, objects[i]);
    }
    q.executeUpdate();
    }

    @Override
    public T loadEntity(Integer id) {
    return (T) sf.getCurrentSession().load(clazz, id);
    }

    @Override
    public T getEntity(Integer id) {
    return (T)sf.getCurrentSession().get(clazz,id);
    }

    @Override
    public List findEntityByHQL(String hql, Object... objects) {
    Query q=sf.getCurrentSession().createQuery(hql);
    for(int i=0;i<objects.length;i++){
    q.setParameter(i, objects[i]);
    }
    return q.list();
    }

  • 写回答

1条回答 默认 最新

  • exiashna 2015-05-02 06:23
    关注

    把@Resource(value="userDao")改为@Resource(name="userDao"),
    1.另外说明 @Resource若要指定值必须是 @Resuouce(name="xxx")的形式
    2.@Resource 什么都不写,取值为 属性名,setxxx()方法 的名字xxx,首字母小写

    评论

报告相同问题?

悬赏问题

  • ¥20 matlab计算中误差
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊