Hi,

I am using OpenJPA with Delimited identifiers enabled through the orm.xml
file, I am able to create the database schema and I can see debugging that
table columns are correctly delimited with double quotes in Table object,
however, when I ask EntityManager to create a query it loads the table
metadata into the Table object without columns being delimited, only table
name is delimited. As the columns in table metadata are not delimited, when
the JPQL is parsed an exception is thrown because it cannot find delimited
column names (they are correctly delimited from the corresponding Entity
object) in table metadata (in this case the Table object that gets created
from the table metadata does not have the column names delimited).

Is there any way to fix that by changing the configuration and make
Delimited identifiers work correctly?

System information:

OpenJPA version: 2.4.3
MySQL version: 5.7.27

Stack trace of the error:

<openjpa-2.4.3-r422266:1833086 fatal user error>
org.apache.openjpa.persistence.ArgumentException:
"com.streamsets.apps.pipelinestore.backend.bean.TestInfo.description"
declares column ""DESCRIPTION"", but this column does not exist in table
""TEST_INFO"".
at
org.apache.openjpa.jdbc.meta.MappingInfo.mergeColumn(MappingInfo.java:692)
at
org.apache.openjpa.jdbc.meta.MappingInfo.createColumns(MappingInfo.java:593)
at
org.apache.openjpa.jdbc.meta.ValueMappingInfo.getColumns(ValueMappingInfo.java:178)
at
org.apache.openjpa.jdbc.meta.strats.StringFieldStrategy.map(StringFieldStrategy.java:84)
at
org.apache.openjpa.jdbc.meta.FieldMapping.setStrategy(FieldMapping.java:148)
at
org.apache.openjpa.jdbc.meta.RuntimeStrategyInstaller.installStrategy(RuntimeStrategyInstaller.java:81)
at
org.apache.openjpa.jdbc.meta.FieldMapping.resolveMapping(FieldMapping.java:498)
at org.apache.openjpa.jdbc.meta.FieldMapping.resolve(FieldMapping.java:463)
at
org.apache.openjpa.jdbc.meta.ClassMapping.resolveNonRelationMappings(ClassMapping.java:921)
at
org.apache.openjpa.jdbc.meta.ClassMapping.resolveMapping(ClassMapping.java:858)
at org.apache.openjpa.meta.ClassMetaData.resolve(ClassMetaData.java:1813)
at
org.apache.openjpa.meta.MetaDataRepository.processBuffer(MetaDataRepository.java:829)
at
org.apache.openjpa.meta.MetaDataRepository.resolveMapping(MetaDataRepository.java:784)
at
org.apache.openjpa.meta.MetaDataRepository.resolve(MetaDataRepository.java:664)
at
org.apache.openjpa.meta.MetaDataRepository.getMetaDataInternal(MetaDataRepository.java:418)
at
org.apache.openjpa.meta.MetaDataRepository.getMetaData(MetaDataRepository.java:389)
at
org.apache.openjpa.meta.MetaDataRepository.getMetaData(MetaDataRepository.java:472)
at
org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.getClassMetaData(JPQLExpressionBuilder.java:177)
at
org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.resolveClassMetaData(JPQLExpressionBuilder.java:153)
at
org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.getCandidateMetaData(JPQLExpressionBuilder.java:243)
at
org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.getCandidateMetaData(JPQLExpressionBuilder.java:213)
at
org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.getCandidateType(JPQLExpressionBuilder.java:206)
at
org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.access$200(JPQLExpressionBuilder.java:81)
at
org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder$ParsedJPQL.populate(JPQLExpressionBuilder.java:2445)
at org.apache.openjpa.kernel.jpql.JPQLParser.populate(JPQLParser.java:60)
at
org.apache.openjpa.kernel.ExpressionStoreQuery.populateFromCompilation(ExpressionStoreQuery.java:162)
at org.apache.openjpa.kernel.QueryImpl.newCompilation(QueryImpl.java:679)
at
org.apache.openjpa.kernel.QueryImpl.compilationFromCache(QueryImpl.java:652)
at
org.apache.openjpa.kernel.QueryImpl.compileForCompilation(QueryImpl.java:619)
at
org.apache.openjpa.kernel.QueryImpl.compileForExecutor(QueryImpl.java:688)
at org.apache.openjpa.kernel.QueryImpl.compile(QueryImpl.java:588)
at
org.apache.openjpa.persistence.EntityManagerImpl.createQuery(EntityManagerImpl.java:1005)
at
org.apache.openjpa.persistence.EntityManagerImpl.createQuery(EntityManagerImpl.java:987)
at
org.apache.openjpa.persistence.EntityManagerImpl.createQuery(EntityManagerImpl.java:977)


Thanks,

Xavier Baques

Software Engineer

------------------------------

<https://www.facebook.com/streamsets/> <https://twitter.com/streamsets>
<https://www.linkedin.com/company/streamsets/>

EMAIL: x...@streamsets.com

<https://streamsets.com>

<https://streamsets.com/products/transformer/>

<https://go.streamsets.com/WC-2019-Book-DataOps-Full-Book_LP.html>

Reply via email to