Select no hibernate com objetos

2 respostas
francis.junio

Bom dia a todos…
Eu tenho um objeto que faz relacionameto com outro.

public class OracleDepartment implements Serializable {

	private static final long serialVersionUID = 1L;
	
	@Id
	@Column(name="DEPARTMENT_ID")
	private Long departmentId;
	
	@Column(name="DEPARTMENT_CODE")
	private String departmentCode;
	
	@Column(name="DESCRIPTION")
	private String departmentName;
	
	@Column(name="MAINT_COST_CATEGORY_VALUE")
	private String maintCostCategoryValue;
	
	@Column(name="DEPARTMENT_CLASS_CODE")
	private String departmentClassCode;
	
    @JoinColumn(name = "ORGANIZATION_ID", referencedColumnName = "ORGANIZATION_ID")
    @ManyToOne
	private OracleOrganization oracleOrganization;

Percebam que eu tenho um objeto OracleOrganization. Ate ai tudo bem… o problema é o seguinte… quando eu vou fazer um select filtrando por esse objeto OracleOrganization, eu tenho que fazer assim:

public List<OracleDepartment> getAllByOrganization(OracleOrganization oOrg) {
		List<Criterion> listCriterios = new ArrayList<Criterion>();
		Criterion c1 = Restrictions.eq("oracleOrganization", oOrg);
		listCriterios.add(c1);

Vejam que tenho que passar o objeto completo para poder fazer a Restrictrions.
Na verdade eu gostaria de fazer o seguinte

public List<OracleDepartment> getAllByOrganization(long id) {
		List<Criterion> listCriterios = new ArrayList<Criterion>();
		Criterion c1 = Restrictions.eq("oracleOrganization.organizationID", id);
		listCriterios.add(c1);

Se eu fizer assim, o hibernate fala que nao conseguiu encontrar o “oracleOrganization.organizationID” no objeto OracleDepartment.
OBS.: no Objeto OracleOrganization tem o campo organizationID…

Alguem tem ideia de como posso fazer?

2 Respostas

E

Entao tenta assim:

public List<OracleDepartment> getAllByOrganization(long id) { 
   Query q = getEntityManager().createQuery("SELECT o FROM OracleDepartament o WHERE o.oracleOrganization.organizationID = :id");
    q.setParameter("id", id);
    return q.getResultList();
}

Ou entao caso esteja utilizando Hibernate ou inves do JPA, utilize o objeto sessionFactory para criar a querie.

francis.junio

Obrigado ebarros. Consegui fazer aki…

Criado 20 de julho de 2010
Ultima resposta 20 de jul. de 2010
Respostas 2
Participantes 2