我正在尝试扩展 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/