我有一个BaseDao接口使用留存数据到MySQL冬眠爪哇通配符错误
public interface BaseDao<T extends Serializable> {
public void saveAll(Collection<T> objects) throws PersistenceException;
}
我有一个实体类hirechy其基类是BaseActivity(所有延伸序列)其中 之一:
public class Activity1 extends BaseACtivity{...}
在某些类
我声明了ActivityDao:
protected abstract ActivityDao<Activity1> createActivityDao1();
的d方法:
private void persistData(ActivityDao<? extends BaseActivity> activityDao, Collection<? extends BaseActivity> data){
EntityTransaction transaction = activityDao.getEntityManager().getTransaction();
try {
transaction.begin();
activityDao.saveAll(data);
transaction.commit();
}
catch (HibernateException ex) {
在activityDao.saveAll(数据)我得到一个编译时异常:
Error:(62, 24) java: method saveAll in interface com.matomy.persistence.dao.BaseDao<T>
cannot be applied to given types;
required: java.util.Collection<capture#1 of ? extends
com.matomy.persistence.entity.activities.BaseActivity>
found: java.util.Collection<capture#2 of ? extends com.matomy.persistence.entity.activities.BaseActivity>
reason: actual argument java.util.Collection<capture#2 of ? extends com.matomy.persistence.entity.activities.BaseActivity>
cannot be converted to java.util.Collection<capture#1 of ? extends com.matomy.persistence.entity.activities.BaseActivity>
by method invocation conversion
BaseActivity:
public abstract class BaseActivity implements Serializable, Comparable<BaseActivity> {
请帮助 谢谢!
罗伊
UPDATE:
private <T extends BaseActivity> void persistData(ActivityDao<T> activityDao, Collection<T> col){
EntityTransaction transaction = activityDao.getEntityManager().getTransaction();
try {
transaction.begin();
activityDao.saveAll(col);
transaction.commit();
}
catch (HibernateException ex) {
是BaseActivity序列化? – assylias
yes:公共抽象类BaseActivity实现了Serializable,Comparable { –
royB
那么,这将是单调乏味的。这是同样的问题。你必须找到一些方法来使这个类具有通用性。或者你需要一些肮脏的解决方法来完成这项工作。 –