Boa noite Senhores,
Gostaria de uma ajudinha de vocês. Tenho o seguinte mapeamento:
package br.com.uspedra.model.as;
import java.io.Serializable;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
@Entity
@Table(name = "assistema")
@NamedQueries({
@NamedQuery(name="AsSistema.searchAll", query="select e from AsSistema e "),
@NamedQuery(name="AsSistema.searchById", query="select e from AsSistema e where e.idSistema = :idSistema")
})
public class AsSistema implements Serializable {
@Id
@Column(name = "id_sistema", nullable = false)
private String idSistema;
@Column(name = "descricao", nullable = false)
private String descricao;
@Column(name = "usuario_responsavel", nullable = false)
private String usuarioResponsavel;
@Column(name = "fg_bloqueio", nullable = false)
private String fgBloqueio;
@Column(name = "bk_ordem", nullable = false)
private int bkOrdem;
@Column(name = "bk_consist", nullable = false)
private String bkConsist;
@Column(name = "tp_bloqueio", nullable = true)
private String tpBloqueio;
@Column(name = "fg_terceiro", nullable = false)
private String fgTerceiro;
@OneToMany( mappedBy="sistema" )
private List<AsOperacao> asOperacaoList;
@OneToMany( mappedBy="sistema" )
private List<AsModulo> asModuloList;
public AsSistema() {
}
public String getIdSistema() {
return idSistema;
}
public void setIdSistema(String idSistema) {
this.idSistema = idSistema;
}
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
public String getUsuarioResponsavel() {
return usuarioResponsavel;
}
public void setUsuarioResponsavel(String usuarioResponsavel) {
this.usuarioResponsavel = usuarioResponsavel;
}
public String getFgBloqueio() {
return fgBloqueio;
}
public void setFgBloqueio(String fgBloqueio) {
this.fgBloqueio = fgBloqueio;
}
public int getBkOrdem() {
return bkOrdem;
}
public void setBkOrdem(int bkOrdem) {
this.bkOrdem = bkOrdem;
}
public String getTpBloqueio() {
return tpBloqueio;
}
public void setTpBloqueio(String tpBloqueio) {
this.tpBloqueio = tpBloqueio;
}
public String getFgTerceiro() {
return fgTerceiro;
}
public void setFgTerceiro(String fgTerceiro) {
this.fgTerceiro = fgTerceiro;
}
public List<AsOperacao> getAsOperacaoList() {
return asOperacaoList;
}
public void setAsOperacaoList(List<AsOperacao> asOperacaoList) {
this.asOperacaoList = asOperacaoList;
}
public List<AsModulo> getAsModuloList() {
return asModuloList;
}
public void setAsModuloList(List<AsModulo> asModuloList) {
this.asModuloList = asModuloList;
}
public String getBkConsist() {
return bkConsist;
}
public void setBkConsist(String bkConsist) {
this.bkConsist = bkConsist;
}
}
Para esse mapeamento tenho o seguinte DAO
package br.com.uspedra.dao.as;
/* Imports */
import br.com.uspedra.model.as.AsSistema;
import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;
import javax.faces.model.SelectItem;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.Query;
/* DAO */
public class AsSistemaDao {
/* Objetos necessarios */
private AsSistema asSistema;
private List asSistemaList;
private EntityManager em;
private EntityManagerFactory emf;
/** Metodo responsavel por executar a query no objeto */
public List searchAll() {
/* Acessa a namedQuery */
try {
/* Instancia objetos */
emf = Persistence.createEntityManagerFactory("webHDPU");
em = getEntityManager();
Query query = (Query) em.createNamedQuery("AsSistema.searchAll");
this.setAsSistemaList(query.getResultList());
} finally {
em.close();
emf.close();
}
return this.asSistemaList;
}
/* Metodo responsavel por buscar todos os registros da tabela */
public List selectItems() {
try {
/* Variaveis necessárias */
List lAsSistema = this.searchAll();
ListIterator iAsSistema = lAsSistema.listIterator();
List ret = new ArrayList();
/* Abrindo o LIST e instanciando o RET com os valores String */
while (iAsSistema.hasNext()) {
AsSistema asSistemaItem = (AsSistema) iAsSistema.next();
SelectItem si = new SelectItem();
si.setValue(asSistemaItem);
si.setLabel(asSistemaItem.getDescricao());
ret.add(si);
}
return ret;
} catch (Exception ex) {
ex.printStackTrace();
return null;
}
}
public EntityManager getEm() {
return em;
}
public void setEm(EntityManager em) {
this.em = em;
}
public EntityManagerFactory getEmf() {
return emf;
}
public void setEmf(EntityManagerFactory emf) {
this.emf = emf;
}
/* Criando o Controler com JPA */
private EntityManager getEntityManager() {
return emf.createEntityManager();
}
public AsSistema getAsSistema() {
return asSistema;
}
public void setAsSistema(AsSistema asSistema) {
this.asSistema = asSistema;
}
public List getAsSistemaList() {
return asSistemaList;
}
public void setAsSistemaList(List asSistemaList) {
this.asSistemaList = asSistemaList;
}
}
Observem que no momento em que eu monto a minha lista de selectItem eu seto o objeto como sendo o ID.
si.setValue(asSistemaItem);
si.setLabel(asSistemaItem.getDescricao());
ret.add(si);
Agora tenho o seguinte managed-bean:
public class AsController {
/*Atributos necessarios*/
private AsChamado asChamadoCtr = null;
private List asSistemaList = null;
private AsSistema asSistema;
/*Monta a lista de select items*/
public String selectItemsAsSistema(){
try{
AsSistemaDao sisDao = new AsSistemaDao();
this.setAsSistemaList(sisDao.selectItems());
return "selectItemsAsSistemaSucess";
}catch(Exception ex){
ex.printStackTrace();
return "selectItemsAsSistemaError";
}
}
// Gets e Sets
Dessa forma tenho o seguinte JSP:
<h:selectOneMenu id="sistema" label="#{bundle.textSistema}" value="#{AsController.asSistema}" >
<f:selectItems value="#{AsController.asSistemaList}" />
</h:selectOneMenu>
Contudo, quando tento persistir o objeto recebo a seguinte mensagem de erro:
Alguém poderia me ajudar ? Existe uma forma simples de resolver esse problema ?
Andei lendo alguma coisa mas tudo parece confuso. Onde está o erro ?
Obrigado a todos.
