Я работаю над созданием весенней загрузки приложения.В этом приложении я включил аудит сущностей для их создания_данных, созданных_данных, измененных_данных, модифицированных_байт с помощью @ EnableJpaAuditing
Однако стандартный метод возвращает данные типа String из этого метода (обычно это имя пользователя).
Тем не менее, в моем приложении я хочу установить атрибуты Created_by ,ified__bject_ различных объектов для типа "Пользователь" (пользовательский объект пользователя в моем приложении, а не простой тип данных String.
Причина, по которой я хочу, чтобы для create_by иified_by был задан тип класса User, заключается в том, что когда я запрашиваю экземпляр сущности, я не хочу запрашивать сущность «Создано» и «изменено» для получения полной информации о пользователе..
Теперь, когда я попытался это сделать, я столкнулся со следующей проблемой.
Метод getCurrentAuditor () постоянно завершается ошибкой, когда я пытаюсь использовать entityManager для запроса информации о пользователе, возвращенной изинформация о зарегистрированном имени пользователя в Spring Security.
Есть ли способ, которым я могу выполнить запрос для извлечения сведений о пользователе из возвращенного имени пользователя из метода getCurrentAuditor ()?
Я использовал следующий код, и он неоднократно завершался ошибкой, что приводило к ошибке переполнения стека.
В приведенном ниже фрагменте кода: Если я уберу запрос к запросу в entityManager, все будет работать нормально.Я не использовал ничего из результата запроса в ответе метода.Просто добавить сам запрос не удастся.
public class AuditorAwareImpl implements AuditorAware<String> {
public static final Logger logger = LoggerFactory.getLogger(AuditorAwareImpl.class);
@Autowired
EntityManager entityManager;
@Override
public String getCurrentAuditor() {
logger.info("Inside getCurrentAuditor() API");
String user = "superadmin";
String userInfoQuery = "select u.id, u.username, u.password, u.superuser, u.fullname, u.email, u.active from User u " +
"where upper(u.username) = upper('" + user + "')";
Query query = entityManager.createNativeQuery(userInfoQuery.toString());
List<Object[]> objResponse = new ArrayList<>();
objResponse = query.getResultList();
logger.info("In getCurrentAuditor() :: Query response :: size :: " + objResponse.size());
return user;
}
}