HELP com a Interface ResultTransformer do Hibernate

3 respostas
Rangel_Zutin

Caros amigos,

Estou com um problema quando uso o metodo setResultTransform. Quando passo como parametro minha classe que implementa ResultTransformer funciona. Porem quando tento usar o ResultTransform do Hibernate atraves da fabrica Transformers.aliasToBean, tenho uma Exception, conforme abaixo:

Assim funciona:

Assim nao funciona:

E gera a seguinte Exception:

Exception in thread "main" org.hibernate.PropertyNotFoundException: Could not find setter for NAME on class uk.co.rangel.model.Employed at org.hibernate.property.ChainedPropertyAccessor.getSetter(ChainedPropertyAccessor.java:68) at org.hibernate.transform.AliasToBeanResultTransformer.transformTuple(AliasToBeanResultTransformer.java:87) at org.hibernate.hql.HolderInstantiator.instantiate(HolderInstantiator.java:92) at org.hibernate.loader.custom.CustomLoader.getResultList(CustomLoader.java:353) at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2125) at org.hibernate.loader.Loader.list(Loader.java:2120) at org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:312) at org.hibernate.impl.SessionImpl.listCustomQuery(SessionImpl.java:1722) at org.hibernate.impl.AbstractSessionImpl.list(AbstractSessionImpl.java:165) at org.hibernate.impl.SQLQueryImpl.list(SQLQueryImpl.java:175) at uk.co.rangel.hibernate.dao.EmployedDAO.getListEmployedByNativeSQLAndResultTransformer(EmployedDAO.java:87) at uk.co.rangel.hibernate.simulation.employed.GetListEmployedByNativeSQL.main(GetListEmployedByNativeSQL.java:21)

Caro que minha classe Employed tem todos os gets e sets… Grato a todos!

3 Respostas

partenon

O problema eh que sua query retorna um “name”, mas nao existe “name” em sua entidade “Employed” :slight_smile:

Quando se usa um Transformer generico, ele tenta mapear automaticamente o retorno de sua consulta a um “Java Bean” (ou POJO, ou o nome que vc queira dar). Este bean nao precisa ser uma classe anotada com @Entity, mas ele deve possuir getters/setters para todas as colunas retornadas pela consulta.

Rangel_Zutin
Estranho pq minha entidade possui todos os getters and setters.
package uk.co.rangel.model;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Lob;
import javax.persistence.Table;
import javax.persistence.Transient;
import javax.persistence.Version;

import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;

@Entity
@Table(name="Employed")
@Cache(usage=CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class Employed {
	@Id
	@GeneratedValue(strategy=GenerationType.SEQUENCE)
	private Long id;
	private String name;
	private String login;
	private String password;
	@Column(name="emailaddress", nullable=false, length=500)
	private String email;
	@Transient
	private Integer age; //won't be persisted
	@Lob
	private String description;
	private Address address;
	@Version
	private Integer version;
		
	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getLogin() {
		return login;
	}
	public void setLogin(String login) {
		this.login = login;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public Integer getAge() {
		return age;
	}
	public void setAge(Integer age) {
		this.age = age;
	}
	public String getDescription() {
		return description;
	}
	public void setDescription(String description) {
		this.description = description;
	}
	public Address getAddress() {
		return address;
	}
	public void setAddress(Address address) {
		this.address = address;
	}
	public void setVersion(Integer version) {
		this.version = version;
	}
	public Integer getVersion() {
		return version;
	}
}
partenon

Desculpe, nao tinha reparado que vc ja tinha falado que todos os getters/setters estavam corretos :slight_smile:
Voce pode passar o codigo do transformer que funciona e o codigo que monta a “sqlQuery” ?

Criado 28 de junho de 2010
Ultima resposta 1 de jul. de 2010
Respostas 3
Participantes 2