[
https://issues.apache.org/jira/browse/OPENJPA-2448?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13809073#comment-13809073
]
Rick Curtis commented on OPENJPA-2448:
--------------------------------------
Since you are able to hit this problem consistently, please write a small unit
test so that we can help fix whatever is going on.
Thanks,
RIck
> java.lang.Integer cannot be cast to java.lang.Long
> --------------------------------------------------
>
> Key: OPENJPA-2448
> URL: https://issues.apache.org/jira/browse/OPENJPA-2448
> Project: OpenJPA
> Issue Type: Bug
> Components: kernel
> Affects Versions: 1.2.2
> Environment: SLES 11
> JRE 6 U15
> Glassfish 2.1.1
> Reporter: hm
> Priority: Critical
>
> We have following error without any changes on application or other related
> liberalizes.
> <openjpa-1.2.2-r422266:898935 nonfatal general error>
> org.apache.openjpa.persistence.PersistenceException: java.lang.Integer cannot
> be cast to java.lang.Long
> at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:894)
> at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:793)
> at
> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:986)
> at
> org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult.java:278)
> at
> org.apache.openjpa.jdbc.sql.SelectImpl$SelectResult.load(SelectImpl.java:2413)
> at
> org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult.java:272)
> at
> org.apache.openjpa.jdbc.kernel.InstanceResultObjectProvider.getResultObject(InstanceResultObjectProvider.java:59)
> at org.apache.openjpa.kernel.QueryImpl.singleResult(QueryImpl.java:1294)
> at org.apache.openjpa.kernel.QueryImpl.toResult(QueryImpl.java:1221)
> at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:990)
> at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:805)
> at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:775)
> at
> org.apache.openjpa.kernel.DelegatingQuery.execute(DelegatingQuery.java:533)
> at org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:252)
> at
> org.apache.openjpa.persistence.QueryImpl.getSingleResult(QueryImpl.java:317)
> this is my persistence.xml file:
> <persistence xmlns="http://java.sun.com/xml/ns/persistence"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
> http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
> version="1.0">
> <persistence-unit name="pu-core90" transaction-type="JTA">
>
> <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
> <jta-data-source>jdbc/coreDS</jta-data-source>
> <mapping-file>META-INF/orm.xml</mapping-file>
> ...
> <class>com.core90.da.UserSession</class>
> ...
> <properties>
> <property name="openjpa.jdbc.DBDictionary"
>
> value="oracle(batchLimit=0,maxEmbeddedBlobSize=-1,maxEmbeddedClobSize=-1)" />
>
> <property name="openjpa.jdbc.SynchronizeMappings"
>
> value="buildSchema(foreignKeys=true,schemaAction='none')"/>
> <property name="openjpa.jdbc.MappingDefaults"
> value="ForeignKeyDeleteAction=restrict,JoinForeignKeyDeleteAction=restrict"/>
> <property name="openjpa.RestoreState" value="all"/>
>
> <property name="openjpa.TransactionMode" value="managed" />
> <property name="openjpa.ManagedRuntime"
> value="jndi(TransactionManagerName=java:appserver/TransactionManager)" />
> <property name="openjpa.DataCache" value="false"/>
> <property name="openjpa.RemoteCommitProvider" value="sjvm" />
> <property name="openjpa.IgnoreChanges" value="true" />
>
> </properties>
>
> </persistence-unit>
>
> </persistence>
> this is my entity class:
> @Entity
> @Table(name="SESSION",
> uniqueConstraints={@javax.persistence.UniqueConstraint(columnNames={"SESUID"})})
> @DataCache(enabled=false)
> public class UserSession {
> @Id
> @Column(name="ID")
> private Long id;
> @Column(name="CRTTIM")
> @Temporal(TemporalType.TIMESTAMP)
> private Date loginDate;
> @Column(name="TIMOUT")
> private Long timeout;
> @Column(name="SESUID", unique=true)
> private String sessionId;
> @Column(name="LSTACCSTIM")
> @Temporal(TemporalType.TIMESTAMP)
> private Date lastAccessTime;
> @Column(name="CLNTIP")
> private String clientIP;
> ...
> }
> we have old version of this entity that located in another class and there is
> a bit difference in timeout variable(data type is Integer). is this
> difference lead to this issue? please consider that there isn't any any
> scenario in application that calls UserSessionOld class.
> @Entity
> @Table(name="SESSION",
> uniqueConstraints={@javax.persistence.UniqueConstraint(columnNames={"SESUID"})})
> @DataCache(enabled=false)
> public class UserSessionOld {
> @Id
> @Column(name="ID")
> private Long id;
> @Column(name="CRTTIM")
> @Temporal(TemporalType.TIMESTAMP)
> private Date loginDate;
> @Column(name="TIMOUT")
> private Integer timeout;
> @Column(name="SESUID", unique=true)
> private String sessionId;
> @Column(name="LSTACCSTIM")
> @Temporal(TemporalType.TIMESTAMP)
> private Date lastAccessTime;
> @Column(name="CLNTIP")
> private String clientIP;
> ...
> }
--
This message was sent by Atlassian JIRA
(v6.1#6144)