Pessoal estou usando um metodo para encontrar os objetos mapeados do banco usando
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.criterion.Example;
o metodo eh esse:
public List<T> findByExample(T instance) throws DAOException {
EntityManager em = JPAHelper.createEntityManager();
Session session = (Session) em.getDelegate();
Example example = Example.create(instance).excludeZeroes();
Criteria criteria = session.createCriteria(instance.getClass()).add(example);
return criteria.list();
}
eu fiz uma jsp com alguns combos que funcionam como filtros para a pesquisa. o bean da minha pagina tem esse metodo:
public String pesquisarPlanejamento() {
logger.info("Pesquisando planejamento");
try {
listaPlanejamento = null;
PlanejamentoService planejamentoService = new PlanejamentoService();
Planejamento planejamento = new Planejamento();
SetorDiariaService setorDiariaService = new SetorDiariaService();
SetorDiaria setorDiaria = setorDiariaService.retornarSetorDiaria(
SetorDiaria.class, setorPlanejamento);
planejamento.setNumAnoPlanejamentoPla(anoPlanejamento);
planejamento.setNumMesPlanejamentoPla(mesPlanejamento);
planejamento.setFkSeqSetorDiariaSdi(setorDiaria);
listaPlanejamento = planejamentoService.pesquisarPlanejamento(planejamento);
return "SUCESSO";
} catch (DAOException ex) {
logger.error(ex);
ex.printStackTrace();
return "ERRO";
}
}
o tipo das variaveis que eu to usando no metodo
private Long mesPlanejamento;
private Long anoPlanejamento;
private Long setorPlanejamento;
a funcao esta funcionando perfeitamente quando eu uso o mes e o ano para fazer o filtro, soh que quando eu estou usando o objeto SetorDiaria (que eh uma classe mapeada) o filtro nao funciona. esta me retornando tudo
no combo eu tenho o numero da fk e por esse numero eu estou peganda a classe com aquele ID e setando na minha classe mapeada que esta apontando para ela. aqui vai minha classe mapeada
@Entity
@Table(schema = "DB_SDP", name = "TB_PLANEJAMENTO_PLA")
@NamedQueries({
@NamedQuery(name = "Planejamento.findByPkSeqPlanejamentoPla",
query = "SELECT p FROM Planejamento p WHERE p.pkSeqPlanejamentoPla = :pkSeqPlanejamentoPla"),
@NamedQuery(name = "Planejamento.findByNumMesPlanejamentoPla",
query = "SELECT p FROM Planejamento p WHERE p.numMesPlanejamentoPla = :numMesPlanejamentoPla"),
@NamedQuery(name = "Planejamento.findByNumAnoPlanejamentoPla",
query = "SELECT p FROM Planejamento p WHERE p.numAnoPlanejamentoPla = :numAnoPlanejamentoPla"),
@NamedQuery(name = "Planejamento.findByDscPeriodoPlanejamentoPla",
query = "SELECT p FROM Planejamento p WHERE p.dscPeriodoPlanejamentoPla = :dscPeriodoPlanejamentoPla"),
@NamedQuery(name = "Planejamento.findByDatCriacaoPlanejamentoPla",
query = "SELECT p FROM Planejamento p WHERE p.datCriacaoPlanejamentoPla = :datCriacaoPlanejamentoPla")
})
public class Planejamento implements Serializable {
private static final long serialVersionUID = 4684325304037668431L;
@Id
@SequenceGenerator(name = "PlanejamentoSeq", sequenceName = "DB_SDP.SEQ_PLANEJAMENTO_PLA", allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "PlanejamentoSeq")
@Column(name = "PK_SEQ_PLANEJAMENTO_PLA", nullable = false)
private Long pkSeqPlanejamentoPla;
@Column(name = "NUM_MES_PLANEJAMENTO_PLA")
private Long numMesPlanejamentoPla;
@Column(name = "NUM_ANO_PLANEJAMENTO_PLA")
private Long numAnoPlanejamentoPla;
@Column(name = "DSC_PERIODO_PLANEJAMENTO_PLA")
private String dscPeriodoPlanejamentoPla;
@Column(name = "DAT_CRIACAO_PLANEJAMENTO_PLA")
@Temporal(TemporalType.DATE)
private Date datCriacaoPlanejamentoPla;
@JoinColumn(name = "FK_SEQ_SETOR_DIARIA_SDI", referencedColumnName = "PK_SEQ_SETOR_DIARIA_SDI")
@ManyToOne
private SetorDiaria fkSeqSetorDiariaSdi;
@OneToMany(mappedBy = "fkSeqPlanejamentoPla")
private Collection<ItemPlanejamento> itemPlanejamentoCollection;
public Planejamento() {
}
public Planejamento(Long pkSeqPlanejamentoPla) {
this.pkSeqPlanejamentoPla = pkSeqPlanejamentoPla;
}
public Long getPkSeqPlanejamentoPla() {
return pkSeqPlanejamentoPla;
}
public void setPkSeqPlanejamentoPla(Long pkSeqPlanejamentoPla) {
this.pkSeqPlanejamentoPla = pkSeqPlanejamentoPla;
}
public Long getNumMesPlanejamentoPla() {
return numMesPlanejamentoPla;
}
public void setNumMesPlanejamentoPla(Long numMesPlanejamentoPla) {
this.numMesPlanejamentoPla = numMesPlanejamentoPla;
}
public Long getNumAnoPlanejamentoPla() {
return numAnoPlanejamentoPla;
}
public void setNumAnoPlanejamentoPla(Long numAnoPlanejamentoPla) {
this.numAnoPlanejamentoPla = numAnoPlanejamentoPla;
}
public String getDscPeriodoPlanejamentoPla() {
return dscPeriodoPlanejamentoPla;
}
public void setDscPeriodoPlanejamentoPla(String dscPeriodoPlanejamentoPla) {
this.dscPeriodoPlanejamentoPla = dscPeriodoPlanejamentoPla;
}
public Date getDatCriacaoPlanejamentoPla() {
return datCriacaoPlanejamentoPla;
}
public void setDatCriacaoPlanejamentoPla(Date datCriacaoPlanejamentoPla) {
this.datCriacaoPlanejamentoPla = datCriacaoPlanejamentoPla;
}
public SetorDiaria getFkSeqSetorDiariaSdi() {
return fkSeqSetorDiariaSdi;
}
public void setFkSeqSetorDiariaSdi(SetorDiaria fkSeqSetorDiariaSdi) {
this.fkSeqSetorDiariaSdi = fkSeqSetorDiariaSdi;
}
public Collection<ItemPlanejamento> getItemPlanejamentoCollection() {
return itemPlanejamentoCollection;
}
public void setItemPlanejamentoCollection(Collection<ItemPlanejamento> itemPlanejamentoCollection) {
this.itemPlanejamentoCollection = itemPlanejamentoCollection;
}
@Override
public int hashCode() {
int hash = 0;
hash += (pkSeqPlanejamentoPla != null ? pkSeqPlanejamentoPla.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof Planejamento)) {
return false;
}
Planejamento other = (Planejamento) object;
if ((this.pkSeqPlanejamentoPla == null && other.pkSeqPlanejamentoPla != null) || (this.pkSeqPlanejamentoPla != null && !this.pkSeqPlanejamentoPla.equals(other.pkSeqPlanejamentoPla))) {
return false;
}
return true;
}
@Override
public String toString() {
return "Planejamento[pkSeqPlanejamentoPla=" + pkSeqPlanejamentoPla + "]";
}
}
e ae alguem sabe porque o metodo nao funciona quando eu seto o objeto FK? o metodo nao jogou nenhuma excecao. eu jah chequei no debugador ele esta setando o objeto direitinho na classe planejamento
se alguem puder me ajudar eu agradeco
[]'s