2013-02-18 1 views
0
public class JobAssetService extends GenericService<JobAssetService, JobAsset, JobAssetDao> { 

} 

Я пытаюсь обеспечить родовое сохранения() функциональность моего уровня сервиса, но это, кажется, не нравится то, что я передаю в dao.save(). Это кажется, что это должно работать ...Невозможно назвать сэкономить на сущности в пределах общего класса

Несовместимые типы Required: M Найдено: java.lang.Object

public class GenericService<T, M, Dao extends GenericDao> { 

    protected Dao dao; 
    protected EntityManager em; 

    public GenericService() { 

    } 

    //map the dao/entity manager when instantiated 
    public GenericService(Class<Dao> daoClass) { 
     //map entity manager & dao 
     //code removed for readability 
    } 

    public M save(M entity) { 
     EntityTransaction tx = em.getTransaction(); 
     tx.begin(); 
     entity = dao.save(entity); //IntelliJ complains about this 
     tx.commit(); 

     return entity; 
    } 
} 
+0

Что такое 'dao.save'? – SLaks

+0

что такое код для Dao/GenericDao? – mantrid

ответ

1

В IntellijIDEA вы можете поместить курсор на ошибку, а затем использовать ALT + ENTER и IntelliJ, вероятно, предложит вам бросить результат

dao.save(entity) 

как "M"

entity = (M) dao.save(entity); 
1

вы должны сделать GenericDao использование дженериков тоже:

class GenericDao<M> { 
    public M save(M entity) { 
     ... 
    } 
} 

затем расширить общую услугу следующим образом:

public class GenericService<T, M, Dao extends GenericDao<M>> { 
+0

'tis действительно лучше, чем тот, который я предложил. Только хотел, чтобы советовать некоторые intellij хаки, а также. –

Смежные вопросы