[i]Galera é o seguinte, estou seguindo um tutorial da apostila da K19 sobre desenvolvimento web com jsf 2 + ejb 3.1 e cdi …
O logo na persistencia ja encontrei dificuldades.
Vamos la.
Tenho essa entidade :[/i]
@Entity
@Table(name = "PRODUTO")
public class Produto {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long idProduto;
private String nome;
private double preco;
// gets e sets omitidos
Esse repositorio :
@Stateless
public class ProdutoRepositorio {
@PersistenceContext
private EntityManager entityManager;
@Resource
private SessionContext sessionContext;
public void adiciona(Produto produto) {
this.entityManager.persist(produto);
if (produto.getPreco() <= 0) {
this.sessionContext.setRollbackOnly();
}
}
E este ManagedBean :
@ManagedBean
public class ProdutoMB {
@EJB
private ProdutoRepositorio produtoRepositorio;
private Produto produto = new Produto();
private List<Produto> produtosCache = new ArrayList<Produto>();
public void adiciona() {
this.produtoRepositorio.adiciona(this.produto);
this.produto = new Produto();
this.produtosCache = null;
}
E este persistence.xml :
<persistence-unit name="k22" transaction-type="JTA">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>jdbc/K19</jta-data-source>
<properties>
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.format_sql" value="true" />
<property name="hibernate.hbm2ddl.auto" value="update" />
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect" />
</properties>
</persistence-unit>
O problema é o seguinte, quando eu tento persistir o produto, recebo a exception EJBException.
Vi no log do servidor, e aparece isto:
sessionbeans.ProdutoRepositorio.adiciona(entidades.Produto)
javax.ejb.EJBException
at com.sun.ejb.containers.BaseContainer.processSystemException(BaseContainer.java:5119)
at com.sun.ejb.containers.BaseContainer.completeNewTx(BaseContainer.java:5017)
at com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseContainer.java:4805)
at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:2004)
at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:1955)
at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:198)
at com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:84)
at $Proxy109.adiciona(Unknown Source)
at sessionbeans.__EJB31_Generated__ProdutoRepositorio__Intf____Bean__.adiciona(Unknown Source)
at managedbeans.ProdutoMB.adiciona(ProdutoMB.java:20)
...