Hi

Maybe check your logs to ensure you use the datasource you expect. You can
also check connecting through JMX to tomee in openejb MBeans.


Romain Manni-Bucau
@rmannibucau <https://twitter.com/rmannibucau> |  Blog
<http://rmannibucau.wordpress.com> | Github <https://github.com/rmannibucau> |
LinkedIn <https://www.linkedin.com/in/rmannibucau> | Tomitriber
<http://www.tomitribe.com>

2015-07-17 8:12 GMT-07:00 Leonardo K. Shikida <[email protected]>:

> actually, it seems something is being inserted somewhere
>
> TRACE  [http-bio-8080-exec-7] openjpa.jdbc.SQL - <t
> 1249135181, conn 1798001212> executing prepstmnt 1563539472 INSERT INTO
> PUBLIC.books (ID, NAME) VALUES (?, ?) [params=?, ?]
>
>
> isn't something related to the autocommit?
>
>
> []
>
> Leo
>
> On Fri, Jul 17, 2015 at 11:28 AM, coco <[email protected]> wrote:
>
> > I m in the beginning with Java EJB. :) I have Dynamic web project in
> > eclipce
> > and i want to save object to mysql database. Dont understand why it is
> not
> > working since i do not have exceptions in my console.
> > I m using Apache Tomee server wich i had installed in eclipse.
> >
> > My Entity class:
> >
> >     package entities;
> >     import static javax.persistence.GenerationType.IDENTITY;
> >     import java.io.Serializable;
> >     import java.io.Serializable;
> >     import javax.persistence.Column;
> >     import javax.persistence.Entity;
> >     import javax.persistence.EntityListeners;
> >     import javax.persistence.GeneratedValue;
> >     import javax.persistence.GenerationType;
> >     import javax.persistence.Id;
> >     import javax.persistence.NamedQueries;
> >     import javax.persistence.NamedQuery;
> >     import javax.persistence.Table;
> >
> >     @Entity
> >     @Table(name="books")
> >     public class Book implements Serializable{
> >
> >         private static final long serialVersionUID =
> -9009670426767476684L;
> >
> >         @Id
> >         @GeneratedValue
> >     private int id;
> >
> >     @Column(name="name")
> >         private String name;
> >
> >     public Book(){
> >     }
> >
> >     public Book(String name) {
> >                 super();
> >                 this.name = name;
> >         }
> >
> >
> >     public int getId() {
> >       return id;
> >     }
> >
> >     public void setId(int id) {
> >       this.id = id;
> >     }
> >
> >     public String getName() {
> >       return name;
> >     }
> >
> >     public void setName(String name) {
> >       this.name = name;
> >     }
> >     }
> >
> > GenericDaoBean:
> >
> >     package beans;
> >     import java.io.Serializable;
> >     import java.lang.reflect.ParameterizedType;
> >     import java.util.List;
> >     import javax.persistence.EntityManager;
> >     import javax.persistence.PersistenceContext;
> >     import javax.persistence.Query;
> >
> >     public abstract class GenericDaoBean<T, ID extends Serializable>
> > implements GenericDaoLocal<T, ID> {
> >
> >         private Class<T> entityType;
> >
> >         @PersistenceContext(unitName = "facebook")
> >         protected EntityManager em;
> >
> >         @SuppressWarnings("unchecked")
> >         public GenericDaoBean() {
> >                 entityType = (Class<T>) ((ParameterizedType) getClass()
> >
> > .getGenericSuperclass()).getActualTypeArguments()[0];
> >         }
> >
> >         public Class<T> getEntityType() {
> >                 return entityType;
> >         }
> >
> >         public T findById(ID id) {
> >                 T entity;
> >                 entity = em.find(entityType, id);
> >                 return entity;
> >         }
> >
> >         @SuppressWarnings("unchecked")
> >         public List<T> findAll() {
> >                 Query q = em.createQuery("SELECT x FROM " +
> > entityType.getSimpleName()
> >                                 + " x");
> >                 List<T> result = q.getResultList();
> >                 return result;
> >         }
> >
> >         @SuppressWarnings("unchecked")
> >         public List<T> findBy(String query) {
> >                 Query q = em.createQuery(query);
> >                 List<T> result = q.getResultList();
> >                 return result;
> >         }
> >
> >         public T persist(T entity) {
> >                 em.persist(entity);
> >                 return entity;
> >         }
> >
> >         public T merge(T entity) {
> >                 entity = em.merge(entity);
> >                 return entity;
> >         }
> >
> >         public void remove(T entity) {
> >                 entity = em.merge(entity);
> >                 em.remove(entity);
> >         }
> >
> >         public void flush() {
> >                 em.flush();
> >         }
> >
> >         public void clear() {
> >                 em.clear();
> >         }
> >
> >     }
> >
> > GenericDaoBeanLocal:
> >
> >     package beans;
> >
> >     import java.io.Serializable;
> >     import java.util.List;
> >
> >     public interface GenericDaoLocal<T, ID extends Serializable> {
> >
> >         public Class<T> getEntityType();
> >
> >         public T findById(ID id);
> >
> >         public List<T> findAll();
> >
> >         public List<T> findBy(String query);
> >
> >         public T persist(T entity);
> >
> >         public T merge(T entity);
> >
> >         public void remove(T entity);
> >
> >         public void flush();
> >
> >         public void clear();
> >
> >     }
> >
> > Conroller:
> >
> >     package controllers;
> >
> >     import java.io.IOException;
> >     import java.util.Calendar;
> >     import javax.ejb.EJB;
> >     import javax.persistence.EntityManager;
> >     import javax.persistence.PersistenceContext;
> >     import javax.servlet.ServletException;
> >     import javax.servlet.http.HttpServlet;
> >     import javax.servlet.http.HttpServletRequest;
> >     import javax.servlet.http.HttpServletResponse;
> >     import beans.BookDaoLocal;
> >     import entities.Book;
> >
> >     public class RegistrationController extends HttpServlet {
> >         private static final long serialVersionUID = 381026218072249234L;
> >
> >         @EJB
> >         private BookDaoLocal bookDao;
> >
> >     @Override
> >         protected void doGet(HttpServletRequest req, HttpServletResponse
> > resp)
> > throws ServletException, IOException {
> >
> >         }
> >
> >         @Override
> >         protected void doPost(HttpServletRequest req, HttpServletResponse
> > resp)
> > throws ServletException, IOException {
> >
> >                 String name = req.getParameter("name");
> >         Book b = new Book();
> >             b.setName(name);
> >                 bookDao.persist(b);
> >
> >         }
> >     }
> >
> >
> > In WebContent under META_INF folder I have persistance.xml and file:
> >
> > Persistence.xml:
> >
> >     <?xml version="1.0" encoding="UTF-8"?>
> >     <persistence version="1.0"
> > xmlns="http://java.sun.com/xml/ns/persistence";
> > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
> > xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
> > http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd";>
> >
> >
> >     <persistence-unit name="facebook" transaction-type="JTA">
> >
> >
> <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
> >     <jta-data-source>facebook</jta-data-source>
> >     <class>entities.Book</class>
> >
> >     <properties>
> >             <property name="openjpa.Log" value="DefaultLevel=WARN,
> > Runtime=INFO, Tool=INFO, SQL=TRACE"/>
> >
> >             <property name="openjpa.jdbc.SynchronizeMappings"
> > value="buildSchema(ForeignKeys=true)"/>
> >             <property name="openjpa.jdbc.SchemaFactory"
> > value="native(ForeignKeys=true)" />
> >
> >             <property name="openjpa.jdbc.EagerFetchMode" value="join"/>
> >
> >     </properties>
> >   </persistence-unit>
> > </persistence>
> >
> > In my src I have jndi.properties file:
> >
> >
> >
> >
> java.naming.factory.initial=org.apache.openejb.client.RemoteInitialContextFactory
> >     java.naming.provider.url=http://127.0.0.1:8080/tomee/ejb
> >
> > In my console I have:
> >
> >     INFO: Server startup in 4161 ms
> >     10092  facebook  INFO   [http-bio-8080-exec-7] openjpa.Runtime -
> > Starting OpenJPA 2.4.0-nonfinal-1598334
> >     11626  facebook  TRACE  [http-bio-8080-exec-7] openjpa.jdbc.SQL - <t
> > 1249135181, conn 2120544240> executing prepstmnt 598104600 SELECT
> > SEQUENCE_SCHEMA, SEQUENCE_NAME FROM INFORMATION_SCHEMA.SYSTEM_SEQUENCES
> >     11626  facebook  TRACE  [http-bio-8080-exec-7] openjpa.jdbc.SQL - <t
> > 1249135181, conn 2120544240> [0 ms] spent
> >     11645  facebook  TRACE  [http-bio-8080-exec-7] openjpa.jdbc.SQL - <t
> > 1249135181, conn 2120544240> executing prepstmnt 726242714 SELECT
> > SEQUENCE_SCHEMA, SEQUENCE_NAME FROM INFORMATION_SCHEMA.SYSTEM_SEQUENCES
> >     11646  facebook  TRACE  [http-bio-8080-exec-7] openjpa.jdbc.SQL - <t
> > 1249135181, conn 2120544240> [1 ms] spent
> >     11794  facebook  TRACE  [http-bio-8080-exec-7] openjpa.jdbc.SQL - <t
> > 1249135181, conn 811560660> executing prepstmnt 1999826151 SELECT
> > SEQUENCE_VALUE FROM PUBLIC.OPENJPA_SEQUENCE_TABLE WHERE ID = ? [params=?]
> >     11794  facebook  TRACE  [http-bio-8080-exec-7] openjpa.jdbc.SQL - <t
> > 1249135181, conn 811560660> [0 ms] spent
> >     11795  facebook  TRACE  [http-bio-8080-exec-7] openjpa.jdbc.SQL - <t
> > 1249135181, conn 811560660> executing prepstmnt 344473922 UPDATE
> > PUBLIC.OPENJPA_SEQUENCE_TABLE SET SEQUENCE_VALUE = ? WHERE ID = ? AND
> > SEQUENCE_VALUE = ? [params=?, ?, ?]
> >     11797  facebook  TRACE  [http-bio-8080-exec-7] openjpa.jdbc.SQL - <t
> > 1249135181, conn 811560660> [2 ms] spent
> >     11813  facebook  TRACE  [http-bio-8080-exec-7] openjpa.jdbc.SQL - <t
> > 1249135181, conn 1798001212> executing prepstmnt 1563539472 INSERT INTO
> > PUBLIC.books (ID, NAME) VALUES (?, ?) [params=?, ?]
> >     11814  facebook  TRACE  [http-bio-8080-exec-7] openjpa.jdbc.SQL - <t
> > 1249135181, conn 1798001212> [1 ms] spent
> >
> >
> > And in tomee.xml (datasource for tomee):
> >
> >     <Resource id="facebook" type="DataSource">
> >           JdbcDriver com.mysql.jdbc.Driver
> >           JdbcUrl jdbc:mysql://
> 127.0.0.1:3306/facebook?autoReconnect=true
> >           UserName root
> >           Password root
> >           JtaManaged true
> >         </Resource>
> >
> > What sould I add or remove to make code from controller work? (persist
> > object in my database)
> >
> > 2)Second situation i have with this is:
> > Since nothing is persist in database it is very strange for me when i try
> > to
> > query records from the same table in which i tried to persist, as a
> result
> > i
> > got the list of all names that i have tried to save in table. (All the
> > names
> > I tried to save in dbase, which are not in dbase are listed now in my
> jsp)
> > My test.jsp is:
> >
> >     <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
> > pageEncoding="ISO-8859-1"%>
> >     <%@ taglib uri="http://java.sun.com/jsp/jstl/sql"; prefix="sql" %>
> >     <%@ taglib uri="http://java.sun.com/jsp/jstl/core"; prefix="c" %>
> >     <!DOCTYPE html PUBLIC &quot;-//W3C//DTD HTML 4.01
> > Transitional//EN&quot;
> > &quot;http://www.w3.org/TR/html4/loose.dtd&quot;>
> >
> >     <sql:query var="rs" dataSource="jdbc/facebook">
> >         select name from books
> >     </sql:query>
> >
> >     <html>
> >       <head>
> >         <title>DB Test</title>
> >       </head>
> >       <body>
> >
> >
> > Results
> >
> >
> >      <c:forEach var="row" items="${rs.rows}">
> >         Name ${row.name}<br/>
> >      </c:forEach>
> >
> >        </body>
> >     </html>
> >
> > This means than datasource contain these data? Why is this happening? How
> > to
> > make my data be saved to database? Any help...
> > I m new to this and all help will be precious :)
> >
> >
> >
> > --
> > View this message in context:
> >
> http://tomee-openejb.979440.n4.nabble.com/How-to-persist-object-using-Entity-Manager-and-GenericDao-Bean-and-Tomee-tp4675519.html
> > Sent from the TomEE Users mailing list archive at Nabble.com.
> >
>

Reply via email to