Hey,

I am using JPA along ejb3.   My problem lies in automatically creating the 
database.  When the using hibernate, the table is automatically created when 
the "hbm2ddl.auto" property is set to "create" and a sessionfactory is created. 
 With JPA and ejb3 I am injecting an entitymanager using the 
@PersistenceContext annotation.  The problem is that when an entitymanager is 
injected and methods are called there is no database created to insert to.  My 
question is how do I go about creating the database automatically when it is 
being used this way, or what is the correct approach.

thanks in advance


This is the code where the entitymanager is being injected.

  | import javax.ejb.*;
  | import javax.persistence.*;
  |  
  | 
  | @Stateless
  | public class TodoDao implements TodoDaoInt {
  | 
  |   @PersistenceContext
  |   private EntityManager em;
  | 
  |   public void persist (Todo todo) {
  |     em.persist (todo);
  |   }
  | ....................................
  | 

This is the servlet where the ejb is being used and the persist method is 
called but the table does not exist


  | protected void processRequest(HttpServletRequest request, 
HttpServletResponse response)
  |             throws ServletException, IOException {
  |          
  |             TodoDaoInt tododaoint = this.getDao();
  |   
  |         Todo todo = new Todo();
  |         todo.setTitle("title");
  |         todo.setDescription("object to persist");
  |         
  |         tododaoint.persist(todo);
  |         
  |         String destinationPage = "/Results.jsp";
  | 
  |         // Redirect to destination page.
  |         RequestDispatcher dispatcher =  
getServletContext().getRequestDispatcher(destinationPage);
  | 
  |         dispatcher.forward(request, response);
  |     }
  | 
  |     private TodoDaoInt getDao() {
  |          
  |             try {
  |           InitialContext ctx = new InitialContext();
  |           return (TodoDaoInt) ctx.lookup("ejb3serv2/TodoDao/local");
  |         } catch (Exception e) {
  |           e.printStackTrace();
  |           throw new RuntimeException("couldn't lookup Dao 2", e);
  |         }
  |          
  |       }
  | 

This is the persistence.xml of the ejb

  | <persistence>
  | 
  | <persistence-unit name="helloworld2">
  |       <provider>org.hibernate.ejb.HibernatePersistence</provider>
  |       <jta-data-source>java:/DefaultDS</jta-data-source>
  | 
  | <properties>
  |           
  | <property name="hibernate.archive.autodetection"
  | value="class, hbm"/>
  | <property name="hibernate.connection.driver_class"
  | value="com.mysql.jdbc.Driver" />
  | <property name="hibernate.connection.url"
  | value="jdbc:mysql://localhost/EJB3"/>
  | <property name="hibernate.connection.username"
  | value="ded"/>
  | <property name="hibernate.connection.password"
  | value="dfa"/>
  | <property name="hibernate.dialect"
  | value="org.hibernate.dialect.MySQLDialect"/>
  | 
  | <!-- Use the C3P0 connection pool provider -->
  | <property name="hibernate.c3p0.min_size" value="5"/>
  | <property name="hibernate.c3p0.max_size" value="20"/>
  | <property name="hibernate.c3p0.timeout" value="300"/>
  | <property name="hibernate.c3p0.max_statements" value="50"/>
  | <property name="hibernate.c3p0.idle_test_period" value="3000"/>
  | 
  | <!-- Show and print nice SQL on stdout -->
  | <property name="show_sql" value="true"/>
  | <property name="format_sql" value="true"/>
  | <property name="hbm2ddl.auto" value="create"/>
  |     
  | </properties>
  | 
  | 
  |    </persistence-unit>
  | </persistence>
  | 
  | 

This is the error when the servlet is called saying there is no table to insert 
to

  | description The server encountered an internal error () that prevented it 
from fulfilling this request.
  | 
  | exception 
  | 
  | javax.ejb.EJBException: javax.persistence.PersistenceException: 
org.hibernate.exception.SQLGrammarException: could not insert: [Todo]
  | 
  | ..............................
  | root cause 
  | 
  | javax.persistence.PersistenceException: 
org.hibernate.exception.SQLGrammarException: could not insert: [Todo]
  |     
org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:629)
  | 
  | .......................................................
  | root cause 
  | 
  | org.hibernate.exception.SQLGrammarException: could not insert: [Todo]
  | 
  | .......................................................
  | java.sql.SQLException: Table not found in statement [insert into Todo 
(description, title) values (?, ?)]
  |     org.hsqldb.jdbc.Util.throwError(Unknown Source)
  | 

View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4181367#4181367

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4181367
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to