tenho o seguinte classe com o método queryOn:
[code]
public class QueryUnique implements Query {
private DetachedCriteria detached =null;
public E queryOn(Repository repository) throws RepositoryException {
return repository.uniqueResult(detached);
}
}[/code]
e no meu repositório tenho o seguinte método
public <R> R uniqueResult(DetachedCriteria detached) throws RepositoryException {
Session hibernateSession = (Session) this.manager.getDelegate();
return (R) detached.getExecutableCriteria(hibernateSession).uniqueResult();
}
porém ao compilar me exibi esse erro:
type parameters of <R>R cannot be determined; no unique maximal instance exists for type variable R with upper bounds E,java.lang.Object
return repository.uniqueResult(detached);
como posso mudar meu código para esse erro não ocorrer?
Voce não sabe nesse lugar qual a classe do tipo R.
voce devia fazer algo assim então
public <R> R uniqueResult(DetachedCriteria detached, Class<R> clazz) throws RepositoryException {
Session hibernateSession = (Session) this.manager.getDelegate();
return (R) detached.getExecutableCriteria(hibernateSession).uniqueResult();
}
Nesse caso ele faria o cast.
[quote]tenho o seguinte classe com o método queryOn:
public class QueryUnique<E> implements Query<E> {
private DetachedCriteria detached =null;
public E queryOn(Repository repository) throws RepositoryException {
return repository.uniqueResult(detached);
}
public class QueryUnique implements Query { private DetachedCriteria detached =null; public E queryOn(Repository repository) throws RepositoryException { return repository.uniqueResult(detached); } }
e no meu repositório tenho o seguinte método
public <R> R uniqueResult(DetachedCriteria detached) throws RepositoryException {
Session hibernateSession = (Session) this.manager.getDelegate();
return (R) detached.getExecutableCriteria(hibernateSession).uniqueResult();
}
[/quote]
Esse cast já existe o que fiz foi mudar para
public <R> Object uniqueResult(DetachedCriteria detached) throws RepositoryException {
Session hibernateSession = (Session) this.manager.getDelegate();
return (R) detached.getExecutableCriteria(hibernateSession).uniqueResult();
}
Informando que seria do tipo Object resolveu meu problema.