Minha aplicação executa o sql , mas não retorna os objetos produtos
Session session = HibernateUtil.getSessionFactory().openSession();
SQLQuery query = session.createSQLQuery(sql.toString());
query.setResultTransformer(Transformers.aliasToBean(Produto.class));
query.addScalar("pro_maskcod" ,Hibernate.STRING);
query.addScalar("fsm_codigo" ,Hibernate.STRING);
query.addScalar("fsi_codigo" ,Hibernate.STRING);
query.addScalar("fsp_codigo" ,Hibernate.STRING);
produtos = query.list(); // não retorna nada
obs : Não apresenta erro e mostra o sql no console
Para mostrar a sua query no console vc precisa habilitar no arquivo de propriedades, faça isso para ajudar, assim da para ver o que está rolando na query.
Habilite o parâmetro hibernate.show_sql para true.
Qual o conteúdo da variável “sql” no momento em que vc faz SQLQuery query = session.createSQLQuery(sql.toString()); ???
Att
Quiz dizer que está mostrando a query no console,e que a query está sendo executada perfeitamente .
SQL
StringBuilder sql = new StringBuilder()
.append("SELECT DISTINCT ")
.append(" o.fsm_codigo, ")
.append(" o.fsi_codigo, ")
.append(" o.fsp_codigo, ")
.append(" o.pro_maskcod ")
.append(" FROM ")
.append(" ")
.append( origem)
.append(".proprodutos o JOIN ")
.append( destino)
.append(".proprodutos d ")
.append(" ON ")
.append(" o.pro_maskcod = d.pro_maskcod ")
.append( "WHERE ")
.append(" ( d.fsm_codigo IS NULL OR d.fsi_codigo IS NULL OR d.fsp_codigo IS NULL)")
.append(" AND ")
.append(" ( o.fsm_codigo IS NOT NULL OR o.fsi_codigo IS NOT NULL OR o.fsp_codigo IS NOT NULL)");
Posta o código da classe Produto… tô achando que teu transformer tá se batendo.
Antes estava assim :
package model;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
@Table(name="PROPRODUTOS")
@Entity
public class Produto implements Serializable{
private String referencia;
private String fsm;
private String fsi;
private String fsp;
@Id
@Column(name="pro_maskcod")
public String getReferencia() {
return referencia;
}
@Column(name="fsi_codigo")
public String getFsi() {
return fsi;
}
@Column(name="fsm_codigo")
public String getFsm() {
return fsm;
}
@Column(name="fsp_codigo")
public String getFsp() {
return fsp;
}
public void setFsi(String fsi) {
this.fsi = fsi;
}
public void setFsm(String fsm) {
this.fsm = fsm;
}
public void setFsp(String fsp) {
this.fsp = fsp;
}
public void setReferencia(String referencia) {
this.referencia = referencia;
}
}
Depois
package model;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
@Table(name="PROPRODUTOS")
@Entity
public class Produto implements Serializable{
private String pro_maskcod;
private String fsm_codigo;
private String fsi_codigo;
private String fsp_codigo;
@Id
public String getPro_maskcod() {
return pro_maskcod;
}
public String getFsi_codigo() {
return fsi_codigo;
}
public String getFsm_codigo() {
return fsm_codigo;
}
public String getFsp_codigo() {
return fsp_codigo;
}
public void setFsi_codigo(String fsi_codigo) {
this.fsi_codigo = fsi_codigo;
}
public void setFsm_codigo(String fsm_codigo) {
this.fsm_codigo = fsm_codigo;
}
public void setFsp_codigo(String fsp_codigo) {
this.fsp_codigo = fsp_codigo;
}
public void setPro_maskcod(String pro_maskcod) {
this.pro_maskcod = pro_maskcod;
}
}
continua o erro …
Já executou essa query direto no banco para ver se retorna alguma coisa?
Att
executando essa query , ela retorna alguns registros sim …
RESOLVIDOOO!
Um dos problemas era a classe produto mesmo , que não estava encontrando os atributos … mais o erro mesmo estava na view , onde tinha um ajax que estava causando conflito no resultado da lista
Valeu Galera !