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