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 "-//W3C//DTD HTML 4.01 > Transitional//EN" > "http://www.w3.org/TR/html4/loose.dtd"> > > <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. >
