Caros tenho um relacionamento muitos para muitos onde um documento tem varias digitalizações e uma digitalização tem varios documentos. Mapiei como descrito abaixo usando annotations. Mas a dúvida esta no seguinte, preciso fazer uma consulta por exemplo que me traga todos os documento associados a uma digitalização feita em uma data. Onde esta data esta na tabela de digitalização. Como eu poderia fazer isso? Se possível usando gostaria de saber como fazer isso usando Criterios (Criterion). Mas pode ser outras solução. Nao gostaria de fazer com HQL, gostaria de fazer usando por exemplo um DetachedCriteria adicionando um Restrictions.eq. Mas repito aceito outras soluções.
Abaixo esta o mapeamento
Documento
package br.gov.al.gestaopublica.sed.negocio.entidades;
// Generated 31/08/2009 17:56:40 by Hibernate Tools 3.2.4.GA
import java.util.HashSet;
import java.util.Set;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import org.hibernate.annotations.NamedQuery;
/**
* TbDoc generated by hbm2java
*/
@Entity
@Table(name = "TB_DOC", schema = "dbo", catalog = "SED")
public class DocVO implements java.io.Serializable {
private int idDoc;
private EnvelopeVO envelopeVO;
private ProjetoVO projetoVO;
private StatusDocVO tbStatusDoc;
private CategoriaDocVO categoriaDocVO;
private byte[] pdfDoc;
private byte[] hashDoc;
private int qtdPaginas;
private byte[] assPkcs7;
private Boolean indQualidade;
private String observacoes;
private Set<DigitalizacaoVO> digitalizacoes = new HashSet<DigitalizacaoVO>(0);
public DocVO() {
}
public DocVO(int idDoc, StatusDocVO tbStatusDoc,
CategoriaDocVO categoriaDoc, byte[] pdfDoc, byte[] hashDoc,
int qtdPaginas) {
this.idDoc = idDoc;
this.tbStatusDoc = tbStatusDoc;
this.categoriaDocVO = categoriaDoc;
this.pdfDoc = pdfDoc;
this.hashDoc = hashDoc;
this.qtdPaginas = qtdPaginas;
}
@Id
@Column(name = "ID_DOC", unique = true, nullable = false)
public int getIdDoc() {
return this.idDoc;
}
public void setIdDoc(int idDoc) {
this.idDoc = idDoc;
}
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "ID_ENVELOPE")
public EnvelopeVO getEnvelopeVO() {
return envelopeVO;
}
public void setEnvelopeVO(EnvelopeVO envelopeVO) {
this.envelopeVO = envelopeVO;
}
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "ID_PROJETO")
public ProjetoVO getProjetoVO() {
return projetoVO;
}
public void setProjetoVO(ProjetoVO projetoVO) {
this.projetoVO = projetoVO;
}
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "ID_STATUS", nullable = false)
public StatusDocVO getTbStatusDoc() {
return this.tbStatusDoc;
}
public void setTbStatusDoc(StatusDocVO tbStatusDoc) {
this.tbStatusDoc = tbStatusDoc;
}
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "ID_CATEGORIA", nullable = false)
public CategoriaDocVO getCategoriaDocVO() {
return this.categoriaDocVO;
}
public void setCategoriaDocVO(CategoriaDocVO categoriaDocVO) {
this.categoriaDocVO = categoriaDocVO;
}
@Column(name = "PDF_DOC", nullable = false)
public byte[] getPdfDoc() {
return this.pdfDoc;
}
public void setPdfDoc(byte[] pdfDoc) {
this.pdfDoc = pdfDoc;
}
@Column(name = "HASH_DOC", nullable = false)
public byte[] getHashDoc() {
return this.hashDoc;
}
public void setHashDoc(byte[] hashDoc) {
this.hashDoc = hashDoc;
}
@Column(name = "QTD_PAGINAS", nullable = false)
public int getQtdPaginas() {
return this.qtdPaginas;
}
public void setQtdPaginas(int qtdPaginas) {
this.qtdPaginas = qtdPaginas;
}
@Column(name = "ASS_PKCS7")
public byte[] getAssPkcs7() {
return this.assPkcs7;
}
public void setAssPkcs7(byte[] assPkcs7) {
this.assPkcs7 = assPkcs7;
}
@Column(name = "IND_QUALIDADE")
public Boolean getIndQualidade() {
return this.indQualidade;
}
public void setIndQualidade(Boolean indQualidade) {
this.indQualidade = indQualidade;
}
@Column(name = "OBSERVACOES")
public String getObservacoes() {
return this.observacoes;
}
public void setObservacoes(String observacoes) {
this.observacoes = observacoes;
}
@OneToMany(fetch = FetchType.LAZY, mappedBy = "docs")
@JoinTable(name = "tb_digitalizacao_doc")
public Set<DigitalizacaoVO> getDigitalizacoes() {
return this.digitalizacoes;
}
public void setDigitalizacoes(Set<DigitalizacaoVO> digitalizacoes) {
this.digitalizacoes = digitalizacoes;
}
}
Digitalizacao
package br.gov.al.gestaopublica.sed.negocio.entidades;
// Generated 10/09/2009 19:35:23 by Hibernate Tools 3.2.4.GA
import java.util.Date;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinTable;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
/**
* TbDigitalizacao generated by hbm2java
*/
@Entity
@Table(name = "TB_DIGITALIZACAO", schema = "dbo", catalog = "SED")
public class DigitalizacaoVO implements java.io.Serializable {
private int idDigitalizacao;
private String numDocumento;
private String tipDocumento;
private int numMaquina;
private int numOrdem;
private String numProtocolo;
private String numAutenticador;
private Integer idFormulario;
private boolean indProtVerificado;
private String idUsuarioInclusao;
private Date dthInclusao;
private Set<DocVO> docs = new HashSet<DocVO>(0);
public DigitalizacaoVO() {
}
public DigitalizacaoVO(int idDigitalizacao, int numMaquina, int numOrdem,
String numProtocolo, boolean indProtVerificado,
String idUsuarioInclusao, Date dthInclusao) {
this.idDigitalizacao = idDigitalizacao;
this.numMaquina = numMaquina;
this.numOrdem = numOrdem;
this.numProtocolo = numProtocolo;
this.indProtVerificado = indProtVerificado;
this.idUsuarioInclusao = idUsuarioInclusao;
this.dthInclusao = dthInclusao;
}
public DigitalizacaoVO(int idDigitalizacao, String numDocumento,
String tipDocumento, int numMaquina, int numOrdem,
String numProtocolo, String numAutenticador, Integer idFormulario,
boolean indProtVerificado, String idUsuarioInclusao,
Date dthInclusao, Set<DocVO> docs) {
this.idDigitalizacao = idDigitalizacao;
this.numDocumento = numDocumento;
this.tipDocumento = tipDocumento;
this.numMaquina = numMaquina;
this.numOrdem = numOrdem;
this.numProtocolo = numProtocolo;
this.numAutenticador = numAutenticador;
this.idFormulario = idFormulario;
this.indProtVerificado = indProtVerificado;
this.idUsuarioInclusao = idUsuarioInclusao;
this.dthInclusao = dthInclusao;
this.docs = docs;
}
@Id
@Column(name = "ID_DIGITALIZACAO", unique = true, nullable = false)
public int getIdDigitalizacao() {
return this.idDigitalizacao;
}
public void setIdDigitalizacao(int idDigitalizacao) {
this.idDigitalizacao = idDigitalizacao;
}
@Column(name = "NUM_DOCUMENTO", length = 20)
public String getNumDocumento() {
return this.numDocumento;
}
public void setNumDocumento(String numDocumento) {
this.numDocumento = numDocumento;
}
@Column(name = "TIP_DOCUMENTO", length = 50)
public String getTipDocumento() {
return this.tipDocumento;
}
public void setTipDocumento(String tipDocumento) {
this.tipDocumento = tipDocumento;
}
@Column(name = "NUM_MAQUINA", nullable = false)
public int getNumMaquina() {
return this.numMaquina;
}
public void setNumMaquina(int numMaquina) {
this.numMaquina = numMaquina;
}
@Column(name = "NUM_ORDEM", nullable = false)
public int getNumOrdem() {
return this.numOrdem;
}
public void setNumOrdem(int numOrdem) {
this.numOrdem = numOrdem;
}
@Column(name = "NUM_PROTOCOLO", nullable = false, length = 8)
public String getNumProtocolo() {
return this.numProtocolo;
}
public void setNumProtocolo(String numProtocolo) {
this.numProtocolo = numProtocolo;
}
@Column(name = "NUM_AUTENTICADOR", length = 16)
public String getNumAutenticador() {
return this.numAutenticador;
}
public void setNumAutenticador(String numAutenticador) {
this.numAutenticador = numAutenticador;
}
@Column(name = "ID_FORMULARIO")
public Integer getIdFormulario() {
return this.idFormulario;
}
public void setIdFormulario(Integer idFormulario) {
this.idFormulario = idFormulario;
}
@Column(name = "IND_PROT_VERIFICADO", nullable = false)
public boolean isIndProtVerificado() {
return this.indProtVerificado;
}
public void setIndProtVerificado(boolean indProtVerificado) {
this.indProtVerificado = indProtVerificado;
}
@Column(name = "ID_USUARIO_INCLUSAO", nullable = false, length = 20)
public String getIdUsuarioInclusao() {
return this.idUsuarioInclusao;
}
public void setIdUsuarioInclusao(String idUsuarioInclusao) {
this.idUsuarioInclusao = idUsuarioInclusao;
}
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "DTH_INCLUSAO", nullable = false, length = 23)
public Date getDthInclusao() {
return this.dthInclusao;
}
public void setDthInclusao(Date dthInclusao) {
this.dthInclusao = dthInclusao;
}
@OneToMany(fetch = FetchType.LAZY)
@JoinTable(name = "tb_digitalizacao_doc")
public Set<DocVO> getDocs() {
return this.docs;
}
public void setDocs(Set<DocVO> docs) {
this.docs = docs;
}
}
Agradeço a quem poder me ajudar!!!
Parabéns!