在基本服务上找不到符号

时间:2016-03-14 11:26:29

标签: java spring dao

我在添加新方法时遗漏了一些东西,但我不知道是什么?它在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);
        }
    }

帮助真的很感激!

3 个答案:

答案 0 :(得分:1)

确保您从userDAO.countUsers()调用(LanguageCode,UserType,UserRightOrder)导入了类。 也许你应该粘贴你的错误信息?

答案 1 :(得分:0)

可能你没有在行

中声明变量em
em.createQuery(request.toString());

答案 2 :(得分:0)

我的maven版本(3.0.5)存在JDK1.7问题。我升级到3.3.x版本,现在可以使用了。

感谢:

maven "cannot find symbol" message unhelpful