You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@openjpa.apache.org by "Albert Lee (JIRA)" <ji...@apache.org> on 2013/07/05 16:43:48 UTC

[jira] [Commented] (OPENJPA-2407) Errors using MySql not present using HSqlDb (build-time enhancement and executing query)

    [ https://issues.apache.org/jira/browse/OPENJPA-2407?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13700916#comment-13700916 ] 

Albert Lee commented on OPENJPA-2407:
-------------------------------------

I am not any MySQL expert.

For the first problem, it looks like the message is benign as in:

            if (_meta.isEmbeddedOnly() && _meta.getIdentityType() == ClassMetaData.ID_APPLICATION) {
                _log.error(_loc.get("ID-field-in-embeddable-unsupported", _meta.toString()));
            }
            
Can you confirm if the entity is or not enhance even you see the error message?  You can check the size of the entity class file before and after the enhancement.  The message is a little bit confusing.

For the second problem:

>From looking at the p.xml, the BrokerFactory is set to "ndb".  Based on http://ci.apache.org/projects/openjpa/trunk/docbook/manual.html#openjpa.BrokerFactory, 

 Possible values: jdbc, abstractstore, remote 

Also the DBDictionary's table type is set to "ndb", a quick look at http://www.mysqltutorial.org/understand-mysql-table-types-innodb-myisam.aspx does not show ndb is any supported type.  

Is the "ndb" brokerFactory your custom implementation of the BrokerFactory?

                
> Errors using MySql not present using HSqlDb (build-time enhancement and executing query)
> ----------------------------------------------------------------------------------------
>
>                 Key: OPENJPA-2407
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-2407
>             Project: OpenJPA
>          Issue Type: Bug
>          Components: Enhance
>    Affects Versions: 2.2.2
>         Environment: Windows 8 using MySql Cluster
>            Reporter: Serdyn du Toit
>         Attachments: sandbox-mysqlc4.zip
>
>
> Hi,
> I'm seeing some problems when my persistence.xml is populated with details for MySql Cluster - but when I work against HSqlDb everything is working great.
> First issue during build-time enhancement:
> I get the following even though I don't have any @Embeddables in my code
> [openjpac] 407  testdb  ERROR  [main] openjpa.Enhance - The identity field defined in the code.shared.DataBean Embeddable is not supported. 
>  
> Someone else has also encountered this issue: http://stackoverflow.com/questions/16619860/openjpa-enhance-the-identity-field-defined-in-the-0-embeddable-is-not-suppo
> Second issue at runtime:
> During the second invocation of a method that should return everything from a table I get the following stacktrace:
> 1797  testdb  TRACE  [main] openjpa.jdbc.JDBC - <t 488448102, conn 0> [1 ms] close
> <openjpa-2.2.2-r422266:1468616 nonfatal general error> org.apache.openjpa.persistence.PersistenceException: null
> 	at org.apache.openjpa.kernel.QueryImpl.compileForCompilation(QueryImpl.java:625)
> 	at org.apache.openjpa.kernel.QueryImpl.compileForExecutor(QueryImpl.java:682)
> 	at org.apache.openjpa.kernel.QueryImpl.getOperation(QueryImpl.java:1529)
> 	at org.apache.openjpa.kernel.DelegatingQuery.getOperation(DelegatingQuery.java:124)
> 	at org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:280)
> 	at org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:302)
> 	at test.OpenJpaTest.findAll(OpenJpaTest.java:60)
> 	at test.OpenJpaTest.findAllAndAssertSizeOfOne(OpenJpaTest.java:65)
> 	at test.OpenJpaTest.test(OpenJpaTest.java:45)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
> 	at java.lang.reflect.Method.invoke(Unknown Source)
> 	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
> 	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
> 	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
> 	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
> 	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
> 	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)
> 	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)
> 	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
> 	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
> 	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
> 	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
> 	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
> 	at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
> 	at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
> 	at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
> 	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
> 	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
> 	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
> 	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
> Caused by: java.lang.NullPointerException
> 	at org.apache.openjpa.kernel.ExpressionStoreQuery.newCompilation(ExpressionStoreQuery.java:154)
> 	at org.apache.openjpa.kernel.QueryImpl.newCompilation(QueryImpl.java:672)
> 	at org.apache.openjpa.kernel.QueryImpl.compilationFromCache(QueryImpl.java:654)
> 	at org.apache.openjpa.kernel.QueryImpl.compileForCompilation(QueryImpl.java:620)
> 	... 31 more
> My persistence.xml
> <?xml version="1.0"?>
> <persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">
>   <persistence-unit name="testdb" transaction-type="RESOURCE_LOCAL">
>     <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
>     <class>code.TestDataBean</class>
>     <class>code.shared.DataBean</class>
>     <class>code.shared.AbstractDataBean</class>
>     <properties>
>       <!-- HSqlDb -->
>       <!--
>       <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema" />
>       <property name="openjpa.ConnectionURL" value="jdbc:hsqldb:testdb" />
>       <property name="openjpa.ConnectionDriverName" value="org.hsqldb.jdbcDriver" />
>       <property name="openjpa.ConnectionUserName" value="sa" />
>       <property name="openjpa.ConnectionPassword" value="" />
>       <property name="openjpa.Log" value="DefaultLevel=TRACE" />
>       -->
>       <!-- MySql Cluster port 5000 -->
>       <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema" />
>       <property name="openjpa.ConnectionDriverName" value="com.mysql.jdbc.Driver" />
>       <property name="openjpa.ConnectionURL" value="jdbc:mysql://localhost:5000/clusterdb" />
>       <property name="openjpa.ConnectionUserName" value="root" />
>       <property name="openjpa.ConnectionPassword" value="" />
>       <property name="openjpa.BrokerFactory" value="ndb" />
>       <property name="openjpa.jdbc.DBDictionary" value="TableType=ndb"/>
>       <property name="openjpa.ndb.connectString" value="localhost:1186" />
>       <property name="openjpa.ndb.database" value="clusterdb" />
>       <property name="openjpa.Log" value="DefaultLevel=TRACE" />
>     </properties>
>   </persistence-unit>
> </persistence>

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira