Tenho uma classe com muitos campos, e gostaria de fazer pesquisa no banco de dados onde me retorne o id dos processos com os campos especificos, por exemplo, queria pedir um processo onde o resumoMercadoria fosse LIKE %tenis%, existe algum jeito de atingir esse objetivo com reflection ou com o próprio hibernate sem precisar criar um método no meu DAO para cada campo do meu objeto??
public class Processo {
@Id
@Column(name = "idprocesso")
private Integer id;
// Informações Basicas Processo
@Column(name = "nrprocesso")
private String referencia;
@Column(name = "nrmanifesto")
private String nrManifesto;
@Column(name = "nrconhecimento")
private String nrIndentificacao;
@Column(name = "nrconhecmaster")
private String nrIdentificacaoMaster;
@Column(name = "tpcanal")
private String canal;
@Column(name = "txresumomercadoria")
private String resumoMercadoria;
@Column(name = "vlrpesobruto")
private BigDecimal vlrPesoBruto;
@Column(name = "vlrpesoliquido")
private BigDecimal vlrPesoLiquido;
@Column(name = "nrplacaveiculo")
private String placaVeiculo;
@Column(name = "nrpresencacarga")
private String nrCeMercante;
@Column(name = "dtdesembaraco")
private LocalDateTime dtDesembaraco;
@Column(name = "dtliberacaofaturamento")
private LocalDateTime dtLiberacaoFaturamento;
@Column(name = "dtabertura")
private LocalDateTime dtAbertura;
@Column(name = "dtembarque")
private LocalDateTime dtEmbarque;
@Column(name = "dtchegada")
private LocalDateTime dtChegada;
//Informações do processo em outras tabelas
@OneToOne( optional = true)
@JoinColumn(name = "idservico", referencedColumnName = "idservico")
@Fetch( FetchMode.JOIN )
private Servico servico;
@OneToOne( optional = true)
@JoinColumn(name = "idpessoacliente", referencedColumnName = "idpessoa")
@Fetch( FetchMode.JOIN )
private Pessoa cliente;
@OneToOne( optional = true)
@JoinColumn(name = "idlocalembarque", referencedColumnName = "idterminalcarga")
@Fetch( FetchMode.JOIN )
private TerminalCarga localOrigem;
@OneToOne( optional = true)
@JoinColumn(name = "idlocaldesembarque", referencedColumnName = "idterminalcarga")
@Fetch( FetchMode.JOIN )
private TerminalCarga localDestino;
@OneToOne( optional = true)
@JoinColumn(name = "idarmazemdesembaraco", referencedColumnName = "idarmazem")
@Fetch( FetchMode.JOIN )
private Armazem armazemAlfandegado;
@OneToOne( optional = true)
@JoinColumn(name = "idviatransporte", referencedColumnName = "idviatransporte")
@Fetch( FetchMode.JOIN )
private ViaTransporte transportadora;
@OneToOne( optional = true)
@JoinColumn(name = "idpessoaagente", referencedColumnName = "idpessoa")
@Fetch( FetchMode.JOIN )
private Pessoa agenteDeCarga;
@OneToOne(optional = true)
@Fetch( FetchMode.JOIN )
@JoinColumn(name = "idpessoaetranspitl", referencedColumnName = "idpessoa")
private Pessoa companhia;
@OneToOne(mappedBy = "processo")
@Fetch( FetchMode.JOIN )
private DiCapa diCapa;
//Informações que podem conter mais de uma por processo
@OneToMany(fetch=FetchType.LAZY)
@JoinColumn(name = "idprocesso", referencedColumnName = "idprocesso")
@Fetch( FetchMode.JOIN )
private Set<DiAdicao> diAdicao;
@OneToMany(fetch=FetchType.LAZY)
@JoinColumn(name = "idprocesso", referencedColumnName = "idprocesso")
@Fetch( FetchMode.JOIN )
private Set<DiItem> diItens;
@OneToMany(fetch=FetchType.LAZY)
@JoinColumn(name = "idprocesso", referencedColumnName = "idprocesso")
@Fetch( FetchMode.JOIN )
private Set<ProcessoVolume> processoVolume;
@OneToMany(fetch=FetchType.LAZY)
@JoinColumn(name = "idprocesso", referencedColumnName = "idprocesso")
@Fetch( FetchMode.JOIN )
private Set<ProcessoContainer> processoContainer;
@OneToMany(fetch=FetchType.LAZY)
@JoinColumn(name = "idprocesso", referencedColumnName = "idprocesso")
@Fetch( FetchMode.JOIN )
private Set<ReferenciaCliente> referenciaCliente;
@OneToMany(fetch=FetchType.LAZY)
@JoinColumn(name = "idprocesso", referencedColumnName = "idprocesso")
@Fetch( FetchMode.JOIN )
private Set<ProcessoDocInstrucaoDespacho> processoDocInstrucaoDespacho;