No sistema que estou desenvolvendo tenho a necessidade de salvar um artigo, e nesse artigo devo salvar também o autor e o usuário que realizou a última edição neste arquivo(tanto para auditoria futura quanto para algumas lógicas que dependem do nível do usuário logado).
Para tal tarefa eu pego sempre o usuário que está na sessão e seto como autor, caso seja uma inclusão ou usuarioUltimaAlteracao caso seja uma alteração. Para tanto tenho um relacionamento de Artigo para Usuario
@Entity
public class Artigo{
@ManyToOne
@JoinColumn(name="usuario_criacao)
private Usuario autor;
}
no momento de salvar
public void salvarArtigo(Artigo artigo){
artigo.autoria(usuarioQueVemDaSessao);
//....outros procedimentos
}
Tudo isso funciona, mas devido a um comportamento específico do jpa, notei um comportamento indesejado. Toda vez que carrego um artigo, por padrão como o JPA considera os relacionamentos ManyToOne como EAGER, ele vai fazer o select do autor, e do usuário da ultima alteração. O problema não é o select em si, mas sim que esse select traz as senhas do usuário junto. para contornar isso só escrevendo queries planejadas, mas todo o sistema gira em torno dos Artigos, teria que modificar praticamente todas as minhas queries, oque daria muito trabalho. Existe alguma estratégia para contornar esse problema?