2016-03-14 2 views
0

Мне не хватает чего-то при добавлении нового метода, но я не знаю, что ?? Он генерируя не может найти ошибку компиляции символ в строке userDAO.countUsers:не может найти символ в базовом сервисе

@Autowired 
private UserDAO userDAO; 

    @Async 
private Future<Long> searchCount(MultiValueMap<String, String> parameters) throws DaoException { 


    userDAO.countUsers("bla bla"); 


    return new AsyncResult<Long>(Long.getLong("1")); // temp code 
} 

Вот интерфейс сервиса:

public interface UserDAO { 

long countUsers(String bloblo) throws DaoException; 

А вот реализация:

@Service("userDAO") 
    @SuppressWarnings("unchecked") 
    @Transactional(readOnly = true, timeout = Constants.TRANSACTION_TIMEOUT, propagation = Propagation.SUPPORTS) 
    public class UserDaoImpl implements UserDAO { 

@PersistenceContext 
private EntityManager em; 

    @Override 
    public long countUsers(String bloblo) throws DaoException { 
     // Build request 
     final QueryCriteria qc = new QueryCriteria(bloblo); 

     final StringBuilder request = prepareQuery(qc); 
     request.replace(7, 21, "count(distinct user)"); 
     final Query query = em.createQuery(request.toString()); 

     // Build parameters 
     addParameters(query, qc); 

     // Execute 
     try { 
      return (Long) query.getSingleResult(); 
     } catch (final RuntimeException e) { 
      LOG.error(e.getMessage(), e); 
      throw new DaoException(e); 
     } 
    } 

Помощь действительно оценил!

+0

Я ожидаю, что аргументы, что вы звоните 'UserDAO.countUsers' с не соответствуют заявленным типам аргументов в интерфейсе. Вам нужно пройти через каждый аргумент, в котором вы его вызываете, и убедиться, что он имеет тип, определенный в интерфейсе. – beresfordt

+0

Я сделал это. Я даже попытался создать новый счетчик методов (длинный) с одним единственным аргументом, и у меня такая же ошибка. – benek

ответ

0

Может быть, вы не объявили переменную em в строке

em.createQuery(request.toString()); 
+0

Это не даст ошибку 'can not find symbol' – beresfordt

1

Убедитесь, что вы сделали импорт классов из userDAO.countUsers() вызов (LanguageCode, UserType, UserRightOrder). Возможно, вам стоит нажать на свое сообщение об ошибке?

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