2 qq 35972589 qq_35972589 于 2017.09.05 15:01 提问

诸位大神,这段代码什么毛病,在线等,急!!!

package com.iot.agchen.dao.impl;

import java.util.List;

import com.iot.agchen.bean.User;
import com.iot.agchen.dao.UserDao;

public class UserDaoImpl extends BaseDaoImpl implements UserDao {

@Override
public List list() {
    String hql = " from User ";
    return super.list(hql);
}

@Override
public void save(User u) {
    super.save(u);
}

}

8个回答

qq_23292875
qq_23292875   2017.09.05 15:26

在你继承和你实现的这两个类中都有save这个方法 你把名字改成不同的把

qq_35972589
qq_35972589 我把@Override去掉了,不实现UserDao的接口了,平白多写了一个接口。。。
3 个月之前 回复
caozhy
caozhy   Ds   Rxr 2017.09.05 15:04

UserDao怎么实现的,它是怎么处理list save的方法的

qq_23292875
qq_23292875 回复qq_35972589: 在你继承和你实现的两个类中出现同名方法java分不清楚你到底要重写哪个类里面的这个save方法
3 个月之前 回复
qq_35972589
qq_35972589 回复Hefei19881002: 我主要是想知道这个为什么会错。。。
3 个月之前 回复
qq_23292875
qq_23292875 回复qq_35972589: 那就在UserDaolmpl中加入这两个方法呗
3 个月之前 回复
qq_35972589
qq_35972589 回复Hefei19881002: 不是,UserDao中有两个抽象方法,我想在UserDaolmpl中实现,由于我继承了BaseDaolmpl类,现在报错提示我BaseDaolmpl中必须有这两个方法。
3 个月之前 回复
qq_23292875
qq_23292875 回复qq_35972589: 你的意思是说你的 UserDao 和 BaseDaoImpl 里的方法名字是一样的吗
3 个月之前 回复
qq_35972589
qq_35972589 初学,不懂咋回事。。。
3 个月之前 回复
qq_35972589
qq_35972589 UserDao中两个抽象方法,就是上面重写的那两个,但是似乎是不能重写UserDao里的方法,报错提示必须在BaseDaoImpl声明那两个方法。
3 个月之前 回复
qq_23292875
qq_23292875   2017.09.05 15:05

你这啥也看不出来啊 ,, 抱错了还是咋了

qq_35972589
qq_35972589 回复Hefei19881002: 贴下面去了
3 个月之前 回复
qq_23292875
qq_23292875 回复qq_35972589: 把你这三个类都贴上来吧
3 个月之前 回复
qq_35972589
qq_35972589 报错了( UserDao中两个抽象方法,就是上面重写的那两个,但是似乎是不能重写UserDao里的方法,报错提示必须在BaseDaoImpl声明那两个方法。)
3 个月之前 回复
Tim19921206
Tim19921206   2017.09.05 15:08

很正常、好像没有问题。把报错地方贴出来,你的需求又是什么?想实现什么功能?

qq_35972589
qq_35972589 报错了( UserDao中两个抽象方法,就是上面重写的那两个,但是似乎是不能重写UserDao里的方法,报错提示必须在BaseDaoImpl声明那两个方法。)
3 个月之前 回复
qq_35972589
qq_35972589   2017.09.05 15:15

package com.iot.agchen.dao.impl;

import java.io.Serializable;
import java.util.List;

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.iot.agchen.dao.BaseDao;

public class BaseDaoImpl extends HibernateDaoSupport implements BaseDao {

//@Override
public void delete(Object obj) {
    super.getHibernateTemplate().delete(obj);
}

//@Override
public Object get(Class cls, Serializable id) {
    return super.getHibernateTemplate().get(cls, id);
}

//@Override
public List list(String hql) {
    return super.getHibernateTemplate().find(hql);
}

//@Override
public void save(Object obj) {
    super.getHibernateTemplate().save(obj);
}

//@Override
public void update(Object obj) {
    super.getHibernateTemplate().update(obj);
}

}

package com.iot.agchen.dao;

import java.util.List;

import com.iot.agchen.bean.User;

public interface UserDao {
public void save(User u);

public List list();

}

package com.iot.agchen.dao.impl;

import java.util.List;

import com.iot.agchen.bean.User;
import com.iot.agchen.dao.UserDao;

public class UserDaoImpl extends BaseDaoImpl implements UserDao {

@Override
public List list() {
    String hql = " from User ";
    return super.list(hql);
}

@Override
public void save(User u) {
    super.save(u);
}

}

qq_32763061
qq_32763061 回复qq_35972589: 我复制你的代码 没有报错 很奇怪
3 个月之前 回复
qq_35972589
qq_35972589 报错提示需要在BaseDaoImpl中有public List list()和public void save(User u)两个方法
3 个月之前 回复
qq_32763061
qq_32763061   2017.09.05 15:16

起码要贴一下代码,这一段看不出来问题

qq_35972589
qq_35972589 把涉及到的类都贴到上面了。
3 个月之前 回复
q669239799
q669239799   2017.09.05 15:16

UserDao是不是也继承了BaseDao??

qq_35972589
qq_35972589 没有,代码贴到上面去了,错误有写上去了
3 个月之前 回复
DS623089578
DS623089578   2017.09.05 15:27

首先,UserDao是一个接口,BaseDaoImpl是个类,并不是抽象方法或者接口,那么你就必须实现接口中的所有抽象方法,如果是要在UserDaoImpl 中实现这两个方法
现在有两个解决的办法,第一是将BaseDaoImpl是个类变为抽象类,第二是UserDaoImpl直接实现UserDao接口,并同时继承BaseDaoImpl类

qq_35972589
qq_35972589 不实现了。。。不用接口了,直接把方法写进实体类了
3 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片