java - JHipster UserService - 变量可能尚未初始化

标签 java spring jhipster

我正在尝试扩展 JHipster User,所以我按照下面的官方教程进行操作:

http://www.jhipster.tech/tips/022_tip_registering_user_with_additional_information.html

重点是我总是在 UserService.java 中遇到错误

UserService.java:[61,5] variable alRepository might not have been initialized

下面您可以看到 UserService.java 代码。

初始

package br.ufrj.g2matricula.service;

import br.ufrj.g2matricula.domain.Authority;
import br.ufrj.g2matricula.domain.User;
import br.ufrj.g2matricula.domain.Aluno;
import br.ufrj.g2matricula.repository.AuthorityRepository;
import br.ufrj.g2matricula.config.Constants;
import br.ufrj.g2matricula.repository.UserRepository;
import br.ufrj.g2matricula.repository.AlunoRepository;
import br.ufrj.g2matricula.repository.search.UserSearchRepository;
import br.ufrj.g2matricula.repository.search.AlunoSearchRepository;
import br.ufrj.g2matricula.security.AuthoritiesConstants;
import br.ufrj.g2matricula.security.SecurityUtils;
import br.ufrj.g2matricula.service.util.RandomUtil;
import br.ufrj.g2matricula.service.dto.UserDTO;
import br.ufrj.g2matricula.web.rest.vm.ManagedUserVM;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.time.Instant;
import java.time.temporal.ChronoUnit;
import java.util.*;
import java.util.stream.Collectors;

/**
 * Service class for managing users.
 */
@Service
@Transactional
public class UserService {

    private final Logger log = LoggerFactory.getLogger(UserService.class);

    private final UserRepository userRepository;

    private final AlunoRepository alRepository;

    private final PasswordEncoder passwordEncoder;

    private final UserSearchRepository userSearchRepository;

    private final AlunoSearchRepository alSearchRepository;

    private final AuthorityRepository authorityRepository;

    public UserService(UserRepository userRepository, PasswordEncoder passwordEncoder, UserSearchRepository userSearchRepository, AuthorityRepository authorityRepository) {
        this.userRepository = userRepository;
        this.passwordEncoder = passwordEncoder;
        this.userSearchRepository = userSearchRepository;
        this.authorityRepository = authorityRepository;
    }

    /*public UserService(UserRepository userRepository, AlunoRepository alunoRepository, PasswordEncoder passwordEncoder, UserSearchRepository userSearchRepository, AuthorityRepository authorityRepository) {
        this.userRepository = userRepository;
        this.passwordEncoder = passwordEncoder;
        this.userSearchRepository = userSearchRepository;
        this.authorityRepository = authorityRepository;
        this.alRepository = alunoRepository;
    }*/

createUser方法

public User createUser(String login, String password, String firstName, String lastName, String email, String langKey, Long cpf) {
    User user = new User();
    Authority authority = authorityRepository.findOne(AuthoritiesConstants.USER);
    Set<Authority> authorities = new HashSet<>();
    user.setLogin(login);
    user.setFirstName(firstName);
    user.setLastName(lastName);
    user.setEmail(email);
    //user.setImageUrl(userDTO.getImageUrl());
    if (langKey == null) {
        user.setLangKey(Constants.DEFAULT_LANGUAGE); // default language
    } else {
        user.setLangKey(langKey);
    }
    authorities.add(authority);
    user.setAuthorities(authorities);
    String encryptedPassword = passwordEncoder.encode(RandomUtil.generatePassword());
    user.setPassword(encryptedPassword);
    user.setResetKey(RandomUtil.generateResetKey());
    user.setResetDate(Instant.now());
    user.setActivated(true);
    userRepository.save(user);
    userSearchRepository.save(user);
    log.debug("Created Information for User: {}", user);

    //update Aluno class
    Aluno al = new Aluno();
        al.setUsuario(user);
        al.setCpf(cpf);
        alRepository.save(al);
        alSearchRepository.save(al);
        log.debug("Created Information for UserExtra: {}", al);

    return user;
}

我不能只设置 alRepository = new AlunoRepository(),因为 AlunoRepository 是一个抽象类,无法实例化。

你们建议做什么?

最佳答案

我认为你忘记在你的 userservice 构造函数中注入(inject) alrepository bean

关于java - JHipster UserService - 变量可能尚未初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47607899/

相关文章:

java - 检测 Sprite 是否被触摸的简单方法?

java - spring @Cacheable 与 Ehcache,spel 查找有效对象为 null

docker - docker 运行 jhipster 应用程序镜像时出现 jdbc4.CommunicationsException

mysql - 为 jhipster 中的其他权限启用密码重置选项

java - 转换输出文件不存在

java - 使用 iText 将\DropDown 组件滚动到 PDF

java对象比较与继承

java - Spring Scheduled 注解中的固定速率和固定延迟有什么区别?

java - 在数据库中保存 BCryptPasswordEncoder 时出错

java - Jhipster实体子生成器: How to create liquibase DELTA changelogs?