You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@openjpa.apache.org by "Heath Thomann (JIRA)" <ji...@apache.org> on 2010/04/28 19:25:52 UTC

[jira] Created: (OPENJPA-1642) ClassCastException caused when using property 'openjpa.Sequence'

ClassCastException caused when using property 'openjpa.Sequence'
----------------------------------------------------------------

                 Key: OPENJPA-1642
                 URL: https://issues.apache.org/jira/browse/OPENJPA-1642
             Project: OpenJPA
          Issue Type: Bug
    Affects Versions: 2.0.0, 1.2.2, 1.0.3
            Reporter: Heath Thomann
            Assignee: Heath Thomann


When setting the following property:

<property name="openjpa.Sequence"
value="org.apache.openjpa.jdbc.kernel.ClassTableJDBCSeq()"/>

the following exception is caused:

java.lang.ClassCastException:
org.apache.openjpa.conf.OpenJPAConfigurationImpl cannot be cast to
org.apache.openjpa.jdbc.conf.JDBCConfiguration

The same exception is caused when using other sequence generators, for example 'org.apache.openjpa.jdbc.kernel.TableJDBCSeq'.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Re: [jira] Created: (OPENJPA-1642) ClassCastException caused when using property 'openjpa.Sequence'

Posted by Ян Программист <we...@gmail.com>.
Thanks! John

2010/4/28 Heath Thomann (JIRA) <ji...@apache.org>

> ClassCastException caused when using property 'openjpa.Sequence'
> ----------------------------------------------------------------
>
>                 Key: OPENJPA-1642
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-1642
>             Project: OpenJPA
>          Issue Type: Bug
>    Affects Versions: 2.0.0, 1.2.2, 1.0.3
>            Reporter: Heath Thomann
>            Assignee: Heath Thomann
>
>
> When setting the following property:
>
> <property name="openjpa.Sequence"
> value="org.apache.openjpa.jdbc.kernel.ClassTableJDBCSeq()"/>
>
> the following exception is caused:
>
> java.lang.ClassCastException:
> org.apache.openjpa.conf.OpenJPAConfigurationImpl cannot be cast to
> org.apache.openjpa.jdbc.conf.JDBCConfiguration
>
> The same exception is caused when using other sequence generators, for
> example 'org.apache.openjpa.jdbc.kernel.TableJDBCSeq'.
>
> --
> This message is automatically generated by JIRA.
> -
> You can reply to this email to add a comment to the issue online.
>
>

[jira] Commented: (OPENJPA-1642) ClassCastException caused when using property 'openjpa.Sequence'

Posted by "John (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/OPENJPA-1642?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12862227#action_12862227 ] 

John commented on OPENJPA-1642:
-------------------------------

Contents of persistence.xml file:

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    version="1.0">

    <!--
        We need to enumerate each persistent class first in the persistence.xml
        See: http://issues.apache.org/jira/browse/OPENJPA-78
    -->
    <persistence-unit name="none" transaction-type="RESOURCE_LOCAL">
        <mapping-file>reversemapping/orm.xml</mapping-file>
        <class>hellojpa.Message</class>
        <class>relations.Deity</class>
    </persistence-unit>

    <!--
        A persistence unit is a set of listed persistent entities as well
        the configuration of an EntityManagerFactory. We configure each
        example in a separate persistence-unit.
    -->
    <persistence-unit name="hellojpa" transaction-type="RESOURCE_LOCAL">
        <!--
            The default provider can be OpenJPA, or some other product.
            This element is optional if OpenJPA is the only JPA provider
            in the current classloading environment, but can be specified
            in cases where there are multiple JPA implementations available.
        -->
        <!--
        <provider>
            org.apache.openjpa.persistence.PersistenceProviderImpl
        </provider>
        -->

        <!-- We must enumerate each entity in the persistence unit -->
        <class>hellojpa.Message</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:derby:openjpa-database;create=true"/>
            <property name="openjpa.ConnectionDriverName" 
                value="org.apache.derby.jdbc.EmbeddedDriver"/>
            <property name="openjpa.ConnectionUserName" 
                value="user"/>
            <property name="openjpa.ConnectionPassword" 
                value="secret"/>
            -->
            <property name="openjpa.Sequence" value="org.apache.openjpa.jdbc.kernel.ClassTableJDBCSeq"/>
        </properties>
    </persistence-unit>

    <!-- persistence unit for the "relations" example -->
    <persistence-unit name="relations" transaction-type="RESOURCE_LOCAL">
        <class>relations.Deity</class>
    </persistence-unit>

    <!-- persistence unit for the "reversemapping" example -->
    <persistence-unit name="reversemapping" transaction-type="RESOURCE_LOCAL">
        <mapping-file>reversemapping/orm.xml</mapping-file>
    </persistence-unit>
    <persistence-unit name="embeddables" transaction-type="RESOURCE_LOCAL">
        <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
        <class>embeddables.Address</class>
        <class>embeddables.ContactInfo</class>
        <class>embeddables.Coordinates</class>
        <class>embeddables.Phone</class>
        <class>embeddables.User</class>
    </persistence-unit>    
</persistence>

> ClassCastException caused when using property 'openjpa.Sequence'
> ----------------------------------------------------------------
>
>                 Key: OPENJPA-1642
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-1642
>             Project: OpenJPA
>          Issue Type: Bug
>    Affects Versions: 1.0.3, 1.2.2, 2.0.0
>            Reporter: Heath Thomann
>            Assignee: Heath Thomann
>
> When setting the following property:
> <property name="openjpa.Sequence"
> value="org.apache.openjpa.jdbc.kernel.ClassTableJDBCSeq()"/>
> the following exception is caused:
> java.lang.ClassCastException:
> org.apache.openjpa.conf.OpenJPAConfigurationImpl cannot be cast to
> org.apache.openjpa.jdbc.conf.JDBCConfiguration
> The same exception is caused when using other sequence generators, for example 'org.apache.openjpa.jdbc.kernel.TableJDBCSeq'.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (OPENJPA-1642) ClassCastException caused when using property 'openjpa.Sequence'

Posted by "Michael Dick (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/OPENJPA-1642?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12862821#action_12862821 ] 

Michael Dick commented on OPENJPA-1642:
---------------------------------------

Pinaki's suggestion to enhance at build time (http://openjpa.208410.n2.nabble.com/DataSource-initialization-error-tt4958860.html#a4980529) should work around the problem. It's not very obvious why that's required. 

The problem is that the PCAgentEnhancer (javaagent) is creates and initializes a new instance of OpenJPAConfigurationImpl, but the Sequence plugin you're using requires a JDBCConfigurationImpl. It's the initialization that causes the problem - we're initializing a plugin that requires more information than we have (e.g. JDBC knowledge). 

Fixing it might be interesting - I'd be tempted to lazily initialize instead of eagerly creating all the plugins. This might break other things though - the code indicates that there once was a threading issue. Failing that we'd have to make OpenJPAConfigurationImpl more fault tolerant which could get a bit thorny too. 

At any rate, please do try enhancing at build time. A good reference can be found here : http://webspherepersistence.blogspot.com/2009/02/openjpa-enhancement.html






> ClassCastException caused when using property 'openjpa.Sequence'
> ----------------------------------------------------------------
>
>                 Key: OPENJPA-1642
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-1642
>             Project: OpenJPA
>          Issue Type: Bug
>    Affects Versions: 1.0.3, 1.2.2, 2.0.0
>            Reporter: Heath Thomann
>            Assignee: Heath Thomann
>
> When setting the following property:
> <property name="openjpa.Sequence"
> value="org.apache.openjpa.jdbc.kernel.ClassTableJDBCSeq()"/>
> the following exception is caused:
> java.lang.ClassCastException:
> org.apache.openjpa.conf.OpenJPAConfigurationImpl cannot be cast to
> org.apache.openjpa.jdbc.conf.JDBCConfiguration
> The same exception is caused when using other sequence generators, for example 'org.apache.openjpa.jdbc.kernel.TableJDBCSeq'.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.