Hi Anish,
The error you're getting happens because the OpenJPA Sequence table hasn't
been created. It looks like you'd like OpenJPA to create the tables for you
but you have the syntax slightly wrong.
Instead of <property name="openjpa.ddl-generation"
value="drop-and-create-tables"/>
You probably want <property name="openjpa.jdbc.SynchronizeMappings"
value="buildSchema(SchemaAction='dropDB,add')"/>
hth
-mike
On Thu, Jul 31, 2008 at 7:56 AM, Anish <[EMAIL PROTECTED]> wrote:
>
> hey i have written a small program using opnenjpa to connect to mysql
> server...
> I am using Eclipse ide to do this. i keep getting this error....
>
>
> HelloWorld.java
> package foo;
> import javax.persistence.EntityManager;
> import javax.persistence.EntityManagerFactory;
> import javax.persistence.Persistence;
>
> public class HelloWorld {
> private EntityManagerFactory emf;
> private EntityManager em;
> private String PERSISTENCE_UNIT_NAME = "projectjpa";
> /**
> * @param args
> */
> public static void main(String[] args) {
> // TODO Auto-generated method stub
> HelloWorld hello = new HelloWorld();
> hello.initEntityManager();
> hello.create();
> hello.read();
> hello.closeEntityManager();
>
> }
>
> private void initEntityManager() {
> emf =
> Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME);
> em = emf.createEntityManager();
> }
>
> private void closeEntityManager() {
> em.close();
> emf.close();
> }
>
> private void create() {
> em.getTransaction().begin();
> Greeting g_en = new Greeting("hello world", "en");
> Greeting g_es = new Greeting("hola, mundo", "es");
> Greeting[] greetings = new Greeting[]{g_en, g_es};
> for(Greeting g : greetings) {
> em.persist(g);
> }
> em.getTransaction().commit();
> }
>
> private void read() {
> Greeting g = (Greeting) em.createQuery(
> "select g from Greeting g where g.language =
> :language")
> .setParameter("language", "en").getSingleResult();
> System.out.println("Query returned: " + g);
> }
>
> }
>
> Greeting.java
> package foo;
>
> import java.io.Serializable;
> import javax.persistence.Basic;
> import javax.persistence.Entity;
> import javax.persistence.GeneratedValue;
> import javax.persistence.Id;
>
> @Entity
> public class Greeting implements Serializable {
> @Id @GeneratedValue private int id;
> @Basic private String message;
> @Basic private String language;
>
> public Greeting() {}
> public Greeting(String message, String language) {
> this.message = message;
> this.language = language;
> }
>
> public String toString() {
> return "Greeting id=" + id + ", message=" + message + ",
> language=" +
> language;
> }
> }
>
> 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="projectjpa">
> <class>foo.Greeting</class>
> <properties>
> <!--
> We can configure the default OpenJPA properties here. They
> happen to be commented out here since the provided examples
> all specify the values via System properties.
> -->
>
>
> <property name="openjpa.ConnectionURL"
> value="jdbc:mysql://localhost:3306/greeting"/>
> <property name="openjpa.ConnectionDriverName"
> value="com.mysql.jdbc.Driver"/>
> <property name="openjpa.ConnectionUserName"
> value="root"/>
> <property name="openjpa.ConnectionPassword"
> value="admin"/>
> <property name="openjpa.ddl-generation"
> value="drop-and-create-tables"/>
> </properties>
> </persistence-unit>
> </persistence>
>
>
> Stack trace
> 34 projectjpa WARN [main] openjpa.Runtime - The configuration property
> named "openjpa.ddl-generation" was not recognized and will be ignored,
> although the name closely matches a valid property called
> "openjpa.ManagedRuntime".
> 134 projectjpa INFO [main] openjpa.Runtime - Starting OpenJPA 1.1.0
> 361 projectjpa INFO [main] openjpa.jdbc.JDBC - Using dictionary class
> "org.apache.openjpa.jdbc.sql.MySQLDictionary".
> 1191 projectjpa INFO [main] openjpa.Enhance - Creating subclass for
> "[class foo.Greeting]". This means that your application will be less
> efficient and will consume more memory than it would if you ran the OpenJPA
> enhancer. Additionally, lazy loading will not be available for one-to-one
> and many-to-one persistent attributes in types using field access; they
> will
> be loaded eagerly instead.
> Exception in thread "main" <openjpa-1.1.0-r422266:657916 fatal store error>
> org.apache.openjpa.persistence.RollbackException: Attempt to update the
> sequence table "OPENJPA_SEQUENCE_TABLE" failed. The sequence table is
> typically created when you run the mappingtool's refresh action on any
> datastore identity class. If you have not run the mappingtool but want to
> create the sequence table, run:
> java org.apache.openjpa.jdbc.kernel.TableJDBCSeq -action add
> at
>
> org.apache.openjpa.persistence.EntityManagerImpl.commit(EntityManagerImpl.java:523)
> at foo.HelloWorld.create(HelloWorld.java:41)
> at foo.HelloWorld.main(HelloWorld.java:17)
> Caused by: <openjpa-1.1.0-r422266:657916 nonfatal general error>
> org.apache.openjpa.persistence.PersistenceException: Attempt to update the
> sequence table "OPENJPA_SEQUENCE_TABLE" failed. The sequence table is
> typically created when you run the mappingtool's refresh action on any
> datastore identity class. If you have not run the mappingtool but want to
> create the sequence table, run:
> java org.apache.openjpa.jdbc.kernel.TableJDBCSeq -action add
> at
> org.apache.openjpa.jdbc.sql.SQLExceptions.narrow(SQLExceptions.java:146)
> at
>
> org.apache.openjpa.jdbc.sql.DBDictionary.newStoreException(DBDictionary.java:4150)
> at
> org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:102)
> at
> org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:80)
> at
>
> org.apache.openjpa.jdbc.kernel.TableJDBCSeq.allocateSequence(TableJDBCSeq.java:371)
> at
>
> org.apache.openjpa.jdbc.kernel.TableJDBCSeq.nextInternal(TableJDBCSeq.java:266)
> at
>
> org.apache.openjpa.jdbc.kernel.AbstractJDBCSeq.next(AbstractJDBCSeq.java:60)
> at
> org.apache.openjpa.util.ImplHelper.generateValue(ImplHelper.java:160)
> at
> org.apache.openjpa.util.ImplHelper.generateFieldValue(ImplHelper.java:144)
> at
>
> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.assignField(JDBCStoreManager.java:592)
> at
> org.apache.openjpa.util.ApplicationIds.assign(ApplicationIds.java:464)
> at
> org.apache.openjpa.util.ApplicationIds.assign(ApplicationIds.java:440)
> at
>
> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.assignObjectId(JDBCStoreManager.java:576)
> at
>
> org.apache.openjpa.kernel.DelegatingStoreManager.assignObjectId(DelegatingStoreManager.java:134)
> at
>
> org.apache.openjpa.kernel.StateManagerImpl.assignObjectId(StateManagerImpl.java:517)
> at
>
> org.apache.openjpa.kernel.StateManagerImpl.preFlush(StateManagerImpl.java:2814)
> at
> org.apache.openjpa.kernel.PNewState.beforeFlush(PNewState.java:39)
> at
>
> org.apache.openjpa.kernel.StateManagerImpl.beforeFlush(StateManagerImpl.java:957)
> at org.apache.openjpa.kernel.BrokerImpl.flush(BrokerImpl.java:1945)
> at
> org.apache.openjpa.kernel.BrokerImpl.flushSafe(BrokerImpl.java:1905)
> at
> org.apache.openjpa.kernel.BrokerImpl.beforeCompletion(BrokerImpl.java:1823)
> at
>
> org.apache.openjpa.kernel.LocalManagedRuntime.commit(LocalManagedRuntime.java:81)
> at org.apache.openjpa.kernel.BrokerImpl.commit(BrokerImpl.java:1347)
> at
>
> org.apache.openjpa.kernel.DelegatingBroker.commit(DelegatingBroker.java:877)
> at
>
> org.apache.openjpa.persistence.EntityManagerImpl.commit(EntityManagerImpl.java:512)
> ... 2 more
> Caused by: org.apache.openjpa.lib.jdbc.ReportingSQLException: Table
> 'greeting.openjpa_sequence_table' doesn't exist {prepstmnt 25104891 SELECT
> SEQUENCE_VALUE FROM OPENJPA_SEQUENCE_TABLE WHERE ID = ? FOR UPDATE
> [params=(int) 0]} [code=1146, state=42S02]
> at
>
> org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.wrap(LoggingConnectionDecorator.java:192)
> at
>
> org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.access$700(LoggingConnectionDecorator.java:57)
> at
>
> org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator$LoggingConnection$LoggingPreparedStatement.executeQuery(LoggingConnectionDecorator.java:852)
> at
>
> org.apache.openjpa.lib.jdbc.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:262)
> at
>
> org.apache.openjpa.lib.jdbc.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:252)
> at
>
> org.apache.openjpa.jdbc.kernel.TableJDBCSeq.executeQuery(TableJDBCSeq.java:728)
> at
>
> org.apache.openjpa.jdbc.kernel.TableJDBCSeq.getSequence(TableJDBCSeq.java:470)
> at
>
> org.apache.openjpa.jdbc.kernel.TableJDBCSeq.setSequence(TableJDBCSeq.java:510)
> at
>
> org.apache.openjpa.jdbc.kernel.TableJDBCSeq.allocateSequence(TableJDBCSeq.java:368)
> ... 22 more
>
> --
> View this message in context:
> http://n2.nabble.com/Exception-in-thread-%22main%22-%3Copenjpa-1.1.0-r422266%3A657916-fatal-store-error%3E-tp662273p662273.html
> Sent from the OpenJPA Users mailing list archive at Nabble.com.
>
>