hola!! estoy aprendiendo java web con eclipse kepler, jpa, EJB, eclipse link a base de datos Postgres y primefaces; y trato de hacer un crud, he visto tutoriales en linea y video y he tratado de hacer algo asi:
mi Entidad (llamada Posicion y la Tabla postgres posicion)
import java.io.Serializable;
import javax.persistence.*;
@Entity
@NamedQuery(name="Posicion.findAll", query="SELECT p FROM Posicion p")
public class Posicion implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@SequenceGenerator(name="POSICION_CODIGOPOSICION_GENERATOR", sequenceName="SEQ_GEN")
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="POSICION_CODIGOPOSICION_GENERATOR")
private Long codigoposicion;
private String estado;
private Boolean habilitado;
private Long posx;
private Long posy;
private String tiposorteo;
public Posicion() {
}
public Long getCodigoposicion() {
return this.codigoposicion;
}
public void setCodigoposicion(Long codigoposicion) {
this.codigoposicion = codigoposicion;
}
public String getEstado() {
return this.estado;
}
public void setEstado(String estado) {
this.estado = estado;
}
public Boolean getHabilitado() {
return this.habilitado;
}
public void setHabilitado(Boolean habilitado) {
this.habilitado = habilitado;
}
public Long getPosx() {
return this.posx;
}
public void setPosx(Long posx) {
this.posx = posx;
}
public Long getPosy() {
return this.posy;
}
public void setPosy(Long posy) {
this.posy = posy;
}
public String getTiposorteo() {
return this.tiposorteo;
}
public void setTiposorteo(String tiposorteo) {
this.tiposorteo = tiposorteo;
}
}
mi clase DAO
import javax.persistence.EntityManager;
import co.com.ies.daointerface.IDaoPosiciones;
import co.com.ies.entities.Posicion;
public class DaoPosicion implements IDaoPosiciones {
@Override
public boolean insert(EntityManager em, Posicion oPosicion)
throws Exception {
em.persist(oPosicion);
return true;
}
@Override
public Posicion getByIdPosicion(EntityManager em, long codigoposicion)
throws Exception {
return null;
}
@Override
public boolean update(EntityManager em, Posicion oPosicion)
throws Exception {
em.persist(oPosicion);
return true;
}
@Override
public boolean delete(EntityManager em, Posicion oPosicion,
long codigoposicion) throws Exception {
// TODO Auto-generated method stub
return false;
}
@Override
public Posicion getAllPosicion(EntityManager em, Posicion oPosicion)
throws Exception {
// TODO Auto-generated method stub
return null;
}
}
MI DAO Interface para conectar entityManager
import javax.persistence.EntityManager;
import co.com.ies.entities.Posicion;
public interface IDaoPosiciones {
public boolean insert(EntityManager em, Posicion oPosicion )throws Exception;
public Posicion getByIdPosicion(EntityManager em, long codigoposicion)throws Exception;
public boolean update(EntityManager em, Posicion oPosicion)throws Exception;
public boolean delete(EntityManager em, Posicion oPosicion, long codigoposicion)throws Exception;
public Posicion getAllPosicion(EntityManager em, Posicion oPosicion)throws Exception;
}
Mi clase EJB
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.Persistence;
import co.com.ies.dao.DaoPosicion;
import co.com.ies.daointerface.IDaoPosiciones;
import co.com.ies.ejbinterface.IEjbPosicion;
import co.com.ies.entities.Posicion;
@Stateless
public class EjbPosicion implements IEjbPosicion {
private EntityManagerFactory emf=null;
private EntityManager em=null;
private EntityTransaction et=null;
private Posicion oPosicion;
private List<Posicion> listaPosicion;
@Override
public boolean insert() {
try {
IDaoPosiciones idaoPosicion = new DaoPosicion();
emf=Persistence.createEntityManagerFactory("CrudPosicion");
em=emf.createEntityManager();
et=em.getTransaction();
et.begin();
idaoPosicion.insert(em, oPosicion);
et.commit();
return true;
} catch (Exception ex) {
if (et!=null) {
et.rollback();
}
System.out.println("Error al ingresar" + ex.getMessage());
return false;
}
finally
{
if (em!=null)
{
em.close();
em=null;
}
if (emf!=null) {
emf.close();
emf=null;
}
}
}
Y mi Interface del EJB esta:
import java.util.List;
import javax.ejb.Local;
import co.com.ies.entities.Posicion;
@Local
public interface IEjbPosicion {
public boolean insert();
// public boolean update();
// public boolean delete();
public void setListaPosicion(List<Posicion> listaPosicion);
public List<Posicion> getListaPosicion();
public void setPosicion(Posicion oPosicion);
public Posicion getPosicion();
}
Mi pagina JSF la configure asi, obviamente no esta bien definido por eso recurro a este foro para que iluminen mi COMO LLAMAR un EJB en una pagina JSF e interactuar, o si enves de usar los EJB usar Beans normales ya que es para una aplicación sencilla de intranet.
</h:head>
<h:body>
<h:form >
<p:panel header="posicion" >
<h:panelGrid border="0" columns="3">
<h:outputText value="pos X:"/>
<p:inputText value="#{EjbPosicion.idaoPosicion.posx}"
id="px" required="true"
label="posicion en X"/>
<h:message for="px" style="color: red"/>
<h:outputText value="Pos Y:"/>
<p:inputText feedback="true" value="#{EjbPosicion.posy}"
required="true" id="py"
label="Posicion Y"/>
<h:message for="py" style="color: red"/>
<h:outputText value="Tipo Sorteo:"/>
<p:inputText value="#{EjbPosicion.tiposorteo}"
id="tsorteo" required="true"
label="tipo sorteo"/>
<h:message for="tsorteo" style="color: red"/>
<h:outputText value="Habilitado:"/>
<p:inputText feedback="true" value="#{EjbPosicion.habilitado}"
required="true" id="hab"
label="habilitado"/>
<h:message for="hab" style="color: red"/>
<h:outputText value="Estado:"/>
<p:inputText feedback="true" value="#{EjbPosicion.estado}"
required="true" id="est"
label="habilitado"/>
<h:message for="hab" style="color: red"/>
<p:commandButton value="Grabar" action="#{EjbPosicion.insert()}" ajax="false"/>
</h:panelGrid>
</p:panel>
</h:form>
</h:body>