Hi,

since version 10.3  MariaDB supports sequences. but OpenJPA 4.1.1 has a hard time supporting it.

I finally made it work by adding these attributes:

@Id

@Getter

@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "dendro_seq")

@SequenceGenerator(name = "dendro_seq", sequenceName = "dendro_seq", allocationSize = 1)

privateLong id;

and adding this to persistence.xml

<property name="openjpa.jdbc.DBDictionary" value="mariadb(NextSequenceQuery='SELECT NEXT VALUE FOR {0}')" />

but still it fails. It always wants to create the sequence on startup. I already tried disabling schema, but it does not help:

<property name="openjpa.jdbc.SynchronizeMappings" value="none"/>

(or validate)

a workaround would be to delete the sequence before starting the program. but this does not help, as on the next startup it fails again.

any idea?

try/catch/ignore probably wont't work as init wasn't completed.

thanks

Jan

Exception in thread "main" <openjpa-4.1.1-r9d2f5f8 nonfatal general error> org.apache.openjpa.persistence.PersistenceException: (conn=586) Table 'dendro_seq' already exists {stmnt 1337829755 CREATE SEQUENCE dendro_seq START WITH 1 INCREMENT BY 1} [code=1050, state=42S01] at org.apache.openjpa.jdbc.meta.MappingTool.record(MappingTool.java:625) at org.apache.openjpa.jdbc.meta.MappingTool.record(MappingTool.java:488) at org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.synchronizeMappings(JDBCBrokerFactory.java:173) at org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.synchronizeMappings(JDBCBrokerFactory.java:178) at org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.newBrokerImpl(JDBCBrokerFactory.java:134) at org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:213) at org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:166) at org.apache.openjpa.persistence.EntityManagerFactoryImpl.doCreateEM(EntityManagerFactoryImpl.java:282) at org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:201) at org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:188) at org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:178) at org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:64) at DatabaseHelper.initialize(DatabaseHelper.java:40) Caused by: org.apache.openjpa.lib.jdbc.ReportingSQLException: (conn=586) Table 'dendro_seq' already exists {stmnt 1337829755 CREATE SEQUENCE dendro_seq START WITH 1 INCREMENT BY 1} [code=1050, state=42S01] at org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.wrap(LoggingConnectionDecorator.java:219) at org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.wrap(LoggingConnectionDecorator.java:203) at org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator$LoggingConnection$LoggingStatement.executeUpdate(LoggingConnectionDecorator.java:955) at org.apache.openjpa.lib.jdbc.DelegatingStatement.executeUpdate(DelegatingStatement.java:123) at org.apache.openjpa.jdbc.schema.SchemaTool.executeSQL(SchemaTool.java:1375) at org.apache.openjpa.jdbc.schema.SchemaTool.createSequence(SchemaTool.java:1134) at org.apache.openjpa.jdbc.schema.SchemaTool.buildSchema(SchemaTool.java:581) at org.apache.openjpa.jdbc.schema.SchemaTool.add(SchemaTool.java:565) at org.apache.openjpa.jdbc.schema.SchemaTool.add(SchemaTool.java:400) at org.apache.openjpa.jdbc.schema.SchemaTool.run(SchemaTool.java:372) at org.apache.openjpa.jdbc.meta.MappingTool.record(MappingTool.java:571) ... 13 more

Reply via email to