Estou desenvolvendo um projeto com Spring Boot e Spring Data, e para realizar as querys estou utilizando o Repository. No problema que estou enfrentando, possuo um objeto Usuario que possui uma List<GrupoIntegrante>
, preenchida através do FetchType.LAZY
.
Está funcionando perfeitamente, porém o sistema trabalha com soft delete, ou seja, ao “deletar” um registro, deve alterar seu campo excluido
para true
. Dessa forma, eu gostaria de alterar o repository para utilizar uma @Query
, por exemplo, para automaticamente buscar somente os registros não excluidos ao fazer usuario.getGrupoIntegranteList()
. É possivel realizar esse filtro através da query ou de alguma outra forma? Segue exemplos das classes utilizadas.
Usuario.java
@Entity
@Table(name = "usuario")
@XmlRootElement
@NamedQueries({
@NamedQuery(name = "Usuario.findAll", query = "SELECT u FROM Usuario u")})
public class Usuario extends EntidadeObjeto<Usuario> implements Serializable, Entidade {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "idusuario")
private int idusuario;
@Size(max = 255)
@Column(name = "usuario")
private String usuario;
@Size(max = 255)
@Column(name = "senha")
private String senha;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "idusuario", fetch = FetchType.LAZY)
private List<GrupoIntegrante> grupoIntegranteList;
...
public List<GrupoIntegrante> getGrupoIntegranteList() {
return grupoIntegranteList;
}
public void setGrupoIntegranteList(List<GrupoIntegrante> grupoIntegranteList) {
this.grupoIntegranteList = grupoIntegranteList;
}
UsuarioRepository.java - com um exemplo de tentativa de verificação do campo excluido do GrupoIntegrante
public interface UsuarioRepository extends JpaRepository<Usuario, Integer> {
@Query("SELECT integrante FROM GrupoIntegrante integrante "
+ " INNER JOIN integrante.idusuario AS u "
+ " WHERE integrante.excluido = false")
List<GrupoIntegrante> findGrupoIntegranteByIdusuario();