Segui os passos conforme o video 5 para criar o cadastro de Municipio. Após criá-lo entrei na pesquisa por Municipio e preenchi os campos Descrição e UF, e quando cliquei em pesquisar obtive a seguinte mensagem de erro no console:
org.hibernate.QueryException: could not resolve property: uf of: pacote.entity.UfEntity [select count(*) from pacote.entity.MunicipioEntity obj left outer join obj.uf as obj1 where obj.descricao like '%' || :descricao and obj1.uf = :uf ]
at org.hibernate.persister.entity.AbstractPropertyMapping.propertyException(AbstractPropertyMapping.java:81)
at org.hibernate.persister.entity.AbstractPropertyMapping.toType(AbstractPropertyMapping.java:75)
at org.hibernate.persister.entity.AbstractEntityPersister.toType(AbstractEntityPersister.java:1449)
at org.hibernate.hql.ast.tree.FromElementType.getPropertyType(FromElementType.java:315)
at org.hibernate.hql.ast.tree.FromElement.getPropertyType(FromElement.java:487)
at org.hibernate.hql.ast.tree.DotNode.getDataType(DotNode.java:611)
Autor: Cristian Poças
44 comentários
import javax.persistence.ManyToOne;
import javax.persistence.Column;
import javax.validation.constraints.NotNull;
import javax.persistence.Id;
import javax.validation.constraints.Size;
import javax.persistence.GenerationType;
import javax.persistence.MappedSuperclass;
import javax.persistence.JoinColumn;
import javax.persistence.FetchType;
import org.hibernate.annotations.ForeignKey;
import javax.persistence.GeneratedValue; @MappedSuperclass
@PlcUnifiedValidation
public abstract class Municipio extends AppBaseEntity {
@Id
@GeneratedValue(strategy=GenerationType.AUTO, generator = "SE_MUNICIPIO")
@Column(nullable=false,length=5)
private Long id;
@NotNull
@Size(max = 60)
@Column
private String descricao;
@ManyToOne (targetEntity = UfEntity.class, fetch = FetchType.LAZY)
@ForeignKey(name="FK_MUNICIPIO_UF")
@NotNull
@JoinColumn
private Uf uf;
public Long getId() {
return id;
} public void setId(Long id) {
this.id=id;
} public String getDescricao() {
return descricao;
} public void setDescricao(String descricao) {
this.descricao=descricao;
} public Uf getUf() {
return uf;
} public void setUf(Uf uf) {
this.uf=uf;
} }
package pacote.entity; import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Access;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.AccessType;
import com.powerlogic.jcompany.commons.config.stereotypes.SPlcEntity;
import javax.persistence.Entity;
/**
* Classe Concreta gerada a partir do assistente
*/
@SPlcEntity
@Entity
@Table(name="MUNICIPIO")
@SequenceGenerator(name="SE_MUNICIPIO", sequenceName="SE_MUNICIPIO")
@Access(AccessType.FIELD) @NamedQueries({
@NamedQuery(name="MunicipioEntity.queryMan", query="from MunicipioEntity"),
@NamedQuery(name="MunicipioEntity.querySel", query="select obj.id as id, obj.descricao as descricao, obj1.id as uf_id , obj1.descricao as uf_descricao from MunicipioEntity obj left outer join obj.uf as obj1 order by obj.descricao asc"),
@NamedQuery(name="MunicipioEntity.querySelLookup", query="select id as id, descricao as descricao from MunicipioEntity where id = ? order by id asc")
})
public class MunicipioEntity extends Municipio { private static final long serialVersionUID = 1L;
/*
* Construtor padrão
*/
public MunicipioEntity() {
}
@Override
public String toString() {
return getDescricao();
} } package pacote.entity; import com.powerlogic.jcompany.domain.validation.PlcUnifiedValidation;
import javax.persistence.Column;
import javax.validation.constraints.NotNull;
import javax.persistence.Id;
import javax.validation.constraints.Size;
import javax.persistence.GenerationType;
import javax.persistence.MappedSuperclass;
import com.powerlogic.jcompany.config.domain.PlcReference;
import javax.persistence.GeneratedValue; @MappedSuperclass
@PlcUnifiedValidation
public abstract class Uf extends AppBaseEntity {
@Id
@GeneratedValue(strategy=GenerationType.AUTO, generator = "SE_UF")
@Column(nullable=false,length=5)
private Long id;
@NotNull
@Size(max = 60)
@Column
@PlcReference(testDuplicity=true)
private String descricao;
@NotNull
@Size(max = 2)
@Column
private String sigla;
public Long getId() {
return id;
} public void setId(Long id) {
this.id=id;
} public String getDescricao() {
return descricao;
} public void setDescricao(String descricao) {
this.descricao=descricao;
} public String getSigla() {
return sigla;
} public void setSigla(String sigla) {
this.sigla=sigla;
} } package pacote.entity; import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import com.powerlogic.jcompany.commons.annotation.PlcEntityTreeView;
import javax.persistence.Access;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.AccessType;
import com.powerlogic.jcompany.commons.config.stereotypes.SPlcEntity;
import javax.persistence.Entity;
import javax.persistence.Transient;
/**
* Classe Concreta gerada a partir do assistente
*/
@SPlcEntity
@Entity
@Table(name="UF")
@SequenceGenerator(name="SE_UF", sequenceName="SE_UF")
@Access(AccessType.FIELD) @PlcEntityTreeView(classeLookup=true) @NamedQueries({
@NamedQuery(name="UfEntity.queryMan", query="from UfEntity"),
@NamedQuery(name="UfEntity.querySelLookup", query="select id as id, descricao as descricao from UfEntity where id = ? order by id asc")
})
public class UfEntity extends Uf { private static final long serialVersionUID = 1L;
/*
* Construtor padrão
*/
public UfEntity() {
}
@Override
public String toString() {
return getDescricao();
} @Transient
private transient String indExcPlc = "N"; public void setIndExcPlc(String indExcPlc) {
this.indExcPlc = indExcPlc;
} public String getIndExcPlc() {
return indExcPlc;
} }
import pacote.entity.MunicipioEntity;
import com.powerlogic.jcompany.persistence.jpa.PlcQueryParameter;
import pacote.entity.Uf; import java.util.List; import com.powerlogic.jcompany.persistence.jpa.PlcQuery;
import com.powerlogic.jcompany.persistence.jpa.PlcQueryLineAmount;
import com.powerlogic.jcompany.persistence.jpa.PlcQueryOrderBy;
import com.powerlogic.jcompany.persistence.jpa.PlcQueryFirstLine;
import com.powerlogic.jcompany.commons.annotation.PlcAggregationDAOIoC;
import com.powerlogic.jcompany.commons.config.stereotypes.SPlcDataAccessObject;
import com.powerlogic.jcompany.persistence.jpa.PlcQueryService; /**
* Classe de Persistência gerada pelo assistente
*/ @PlcAggregationDAOIoC(MunicipioEntity.class)
@SPlcDataAccessObject
@PlcQueryService
public class MunicipioDAO extends AppJpaDAO { @PlcQuery("querySel")
public native List<MunicipioEntity> findList(
@PlcQueryOrderBy String dynamicOrderByPlc,
@PlcQueryFirstLine Integer primeiraLinhaPlc,
@PlcQueryLineAmount Integer numeroLinhasPlc,
@PlcQueryParameter(name="descricao", expression="obj.descricao like '%' || :descricao ") String descricao,
@PlcQueryParameter(name="uf", expression="obj1.uf = :uf") Uf uf
); @PlcQuery("querySel")
public native Long findCount(
@PlcQueryParameter(name="descricao", expression="obj.descricao like '%' || :descricao ") String descricao,
@PlcQueryParameter(name="uf", expression="obj1.uf = :uf") Uf uf
);
}