Senhores, preciso descobrir com deixar um "clausula" fixa em minha classe HibernateUtil.
No meu caso, o banco é "multi-empresa", ou seja, os registros são "sempre selecionados" através do "id_empresa", sendo assim fiz dessa forma:
@Entity
@Table(schema ="colocation", name = "lista_acesso")
public class ListaAcesso implements Serializable{
private static final long serialVersionUID = 2249515080313449498L;
@Id
@Column(name = "id_lista_acesso")
@GeneratedValue(strategy = GenerationType.AUTO)
private Long idListaAcesso;
@OneToOne(cascade = { CascadeType.ALL })
@JoinColumn(name = "id_empresa")
private Empresa empresa;
@Column(name = "nome")
private String nome;
@Column(name = "cargo")
private String cargo;
.....
}
@Entity
@Table(name = "pj")
public class Empresa implements Serializable {
private static final long serialVersionUID = -612043523887259306L;
@Id
@Column(name = "id_pj")
private Integer idEmpresa;
@Column(name = "razaosocial")
private String razaoSocial;
@Column(name = "nomefantasia")
private String nomeFantasia;
.....
}
Bom, no meu HibernateUtil
public static List<?> findByCriteria(Class<?> klass, String orderBy, Criterion... criterion)throws DAOException {
Session session = null;
Transaction transaction = null;
try{
session = getSessionFactory().openSession();
transaction = session.beginTransaction();
Criteria crit = session.createCriteria(klass);
for (Criterion c : criterion) {
crit.add(c);
}
crit.add(Restrictions.eq("empresa", FacesUtil.getEmpresa().getIdEmpresa())); //NESSE CASO PRECISO DEIXAR FIXO(Todas classes entity tem o atributo empresa)
crit.addOrder(Order.asc(orderBy));
List<?> retorno = crit.list();
transaction.commit();
return retorno;
}catch(HibernateException hbe){
if(transaction != null){
transaction.rollback();
}
throw new DAOException(hbe);
}finally{
if(session != null){
session.close();
}
}
}
Mas, quando chamo esse método o seguinte erro é apresentado, e o pior que o SQL gerado executa sem falhas!
br.com.rbs.exception.DAOException: org.hibernate.PropertyAccessException: could not get a field value by reflection getter of br.com.unitelco.entity.Empresa.idEmpresa
at br.com.rbs.helper.HibernateUtil.findByCriteria(HibernateUtil.java:103)
at br.com.rbs.dao.hibernate.GenericHibernateDAO.findByCriteria(GenericHibernateDAO.java:37)
Desde já agradeço.