Galera,
estou trabalhando com hibernate com annotations e estao acontecendo algumas coisas no minimo estranhas... quando eu faço uma consulta passando uma classe como criteria o hibernate esta buscando em outra... Por favor me ajudem. Segue o codigo:
codigo dao.java
package br.gov.inca.publico.dao;
import java.util.ArrayList;
import org.apache.log4j.Logger;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Criterion;
public class Dao<T> {
private static Logger log = Logger.getLogger(Dao.class);
public Dao(){
}
public void inserirAtualizar(Object obj) throws Exception {
try{
Session session = CreateSession.getSession();
Transaction tx = session.beginTransaction();
session.saveOrUpdate(obj);
log.info("Inserindo ou atualizando um objeto...");
log.debug(obj);
tx.commit();
log.info("Objeto inserido ou atualizado!");
session.close();
}catch(Exception e){
log.fatal(e);
}
}
public ArrayList<T> buscar(Object obj, ArrayList<Criterion> criterios) throws Exception {
Session session = CreateSession.getSession();
Criteria criteria = session.createCriteria(Object.class);
log.debug(obj);
log.info("Buscando objeto...");
for(Criterion criterion : criterios)
criteria.add(criterion);
log.debug(obj);
return (ArrayList<T>)criteria.list();
}
public void excluir(Object obj) throws Exception {
try{
Session session = CreateSession.getSession();
Transaction tx = session.beginTransaction();
session.delete(obj);
log.debug(obj);
log.info("Excluindo o objeto ");
tx.commit();
log.info("Objeto excluído!");
session.close();
}catch(Exception e){
log.fatal(e);
}
}
public Object carregar(Class obj, int value)throws Exception{
Session session = CreateSession.getSession();
log.info("Carregando o objeto ");
return session.load(obj,value);
}
}
Categoria.java
package br.gov.inca.publico.bean;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.SequenceGenerator;
@SuppressWarnings("serial")
@Entity
@SequenceGenerator(name = "SEQUENCE", sequenceName = "categoria_id_categoria_seq")
public class Categoria implements Serializable{
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE,generator = "SEQUENCE")
@Column(name="id_categoria")
private int idCategoria;
@Column(name="identificador_categoria")
private String identificadorCategoria;
@Column(name="descricao_categoria")
private String descricaoCategoria;
//private Set<RCBP> rcbps = new HashSet<RCBP>();
public String getDescricaoCategoria() {
return descricaoCategoria;
}
public void setDescricaoCategoria(String descricaoCategoria) {
this.descricaoCategoria = descricaoCategoria;
}
public int getIdCategoria() {
return idCategoria;
}
public void setIdCategoria(int idCategoria) {
this.idCategoria = idCategoria;
}
public String getIdentificadorCategoria() {
return identificadorCategoria;
}
public void setIdentificadorCategoria(String identificadorCategoria) {
this.identificadorCategoria = identificadorCategoria;
}
//@OneToMany(mappedBy="categoria", cascade=CascadeType.REMOVE, fetch=FetchType.LAZY)
/*public Set<RCBP>getRcbps() {
return rcbps;
}
public void setRcbps(Set <RCBP>rcbps) {
this.rcbps = rcbps;
}*/
}
HibernateTest.java
package br.gov.inca.publico.test;
import java.util.ArrayList;
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.Expression;
import br.gov.inca.publico.bean.Categoria;
import br.gov.inca.publico.dao.Dao;
public class HibernateTest {
public static void main(String args[]){
Categoria cat = new Categoria();
cat.setDescricaoCategoria("teste descricao");
cat.setIdentificadorCategoria("teste identificador 2");
try{
/*System.out.println("Iniciando persistencia");
Dao<Categoria> categoriaDao = new Dao<Categoria>();
categoriaDao.inserirAtualizar(cat);
System.out.println("Persistencia realizada");
cat = (Categoria)categoriaDao.carregar(Categoria.class,150);
System.out.println(cat.getDescricaoCategoria());
System.out.println(cat.getIdentificadorCategoria());*/
Dao<Categoria> daoCategoria = new Dao<Categoria>();
ArrayList<Criterion> criterios = new ArrayList<Criterion>();
criterios.add(Expression.like("identificadorCategoria","%%"));
for(Categoria item : daoCategoria.buscar(cat,criterios)){
System.out.println(item.getIdentificadorCategoria());
System.out.println(item.getDescricaoCategoria());
}
}catch(Exception e){
e.printStackTrace();
}
}
}
could not resolve property: identificadorCategoria of: br.gov.inca.publico.bean.Instituicao
at org.hibernate.persister.entity.AbstractPropertyMapping.propertyException(AbstractPropertyMapping.java:44)
at org.hibernate.persister.entity.AbstractPropertyMapping.toType(AbstractPropertyMapping.java:38)
at org.hibernate.persister.entity.AbstractEntityPersister.getSubclassPropertyTableNumber(AbstractEntityPersister.java:1375)
at org.hibernate.persister.entity.BasicEntityPropertyMapping.toColumns(BasicEntityPropertyMapping.java:31)
at org.hibernate.persister.entity.AbstractEntityPersister.toColumns(AbstractEntityPersister.java:1350)
at org.hibernate.loader.criteria.CriteriaQueryTranslator.getColumns(CriteriaQueryTranslator.java:434)
at org.hibernate.loader.criteria.CriteriaQueryTranslator.getColumnsUsingProjection(CriteriaQueryTranslator.java:394)
at org.hibernate.criterion.SimpleExpression.toSqlString(SimpleExpression.java:45)
at org.hibernate.loader.criteria.CriteriaQueryTranslator.getWhereCondition(CriteriaQueryTranslator.java:334)
at org.hibernate.loader.criteria.CriteriaJoinWalker.<init>(CriteriaJoinWalker.java:82)
at org.hibernate.loader.criteria.CriteriaLoader.<init>(CriteriaLoader.java:67)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1550)
at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:283)
at br.gov.inca.publico.dao.Dao.buscar(Dao.java:38)
at br.gov.inca.publico.test.HibernateTest.main(HibernateTest.java:30)