You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@openjpa.apache.org by "Fay Wang (JIRA)" <ji...@apache.org> on 2009/12/19 01:30:18 UTC

[jira] Created: (OPENJPA-1438) Fail to remove an entity which has derived identity

Fail to remove an entity which has derived identity
---------------------------------------------------

                 Key: OPENJPA-1438
                 URL: https://issues.apache.org/jira/browse/OPENJPA-1438
             Project: OpenJPA
          Issue Type: Bug
          Components: jdbc
    Affects Versions: 2.0.0
            Reporter: Fay Wang
            Assignee: Fay Wang
             Fix For: 2.0.0


Given the following entity definitions:

@Entity
@IdClass(PersonId.class)
public class MedicalHistory implements Serializable {

    private static final long serialVersionUID = 1L;
    @Id
    @OneToOne
    private Person patient;
    private String doctorName;
          .....

-------------------------------
@Entity
@IdClass(PersonId.class)
public class Person implements Serializable {

    @Id
    String firstName;
    @Id
    String lastName;
    String ssn;
          ...
-------------------------------
public class PersonId implements java.io.Serializable {

    String firstName;
    String lastName;

-------------------------------
Removing MedicalHistory as shown below throws ClassCastException:

MedicalHistory newMHistory = em.find(MedicalHistory.class, personId);
em.remove(newMHistory);
et.commit();


Caused by: <openjpa-0.0.0-rnull nonfatal general error> org.apache.openjpa.persistence.PersistenceException: test.Person cannot be cast to java.lang.String
	at org.apache.openjpa.kernel.BrokerImpl.beforeCompletion(BrokerImpl.java:1939)
	at org.apache.openjpa.kernel.LocalManagedRuntime.commit(LocalManagedRuntime.java:81)
	at org.apache.openjpa.kernel.BrokerImpl.commit(BrokerImpl.java:1455)
	at org.apache.openjpa.kernel.DelegatingBroker.commit(DelegatingBroker.java:903)
	at org.apache.openjpa.persistence.EntityManagerImpl.commit(EntityManagerImpl.java:551)
	... 20 more
Caused by: java.lang.ClassCastException: test.Person cannot be cast to java.lang.String
	at org.apache.openjpa.jdbc.sql.DBDictionary.setTyped(DBDictionary.java:1284)
	at org.apache.openjpa.jdbc.sql.RowImpl.flush(RowImpl.java:892)
	at org.apache.openjpa.jdbc.sql.RowImpl.flush(RowImpl.java:852)
	at org.apache.openjpa.jdbc.kernel.PreparedStatementManagerImpl.flushAndUpdate(PreparedStatementManagerImpl.java:114)
	at org.apache.openjpa.jdbc.kernel.BatchingPreparedStatementManagerImpl.flushAndUpdate(BatchingPreparedStatementManagerImpl.java:80)
	at org.apache.openjpa.jdbc.kernel.PreparedStatementManagerImpl.flushInternal(PreparedStatementManagerImpl.java:97)
	at org.apache.openjpa.jdbc.kernel.PreparedStatementManagerImpl.flush(PreparedStatementManagerImpl.java:85)
	at org.apache.openjpa.jdbc.kernel.ConstraintUpdateManager.flush(ConstraintUpdateManager.java:550)
	at org.apache.openjpa.jdbc.kernel.ConstraintUpdateManager.flush(ConstraintUpdateManager.java:120)
	at org.apache.openjpa.jdbc.kernel.BatchingConstraintUpdateManager.flush(BatchingConstraintUpdateManager.java:59)
	at org.apache.openjpa.jdbc.kernel.AbstractUpdateManager.flush(AbstractUpdateManager.java:103)
	at org.apache.openjpa.jdbc.kernel.AbstractUpdateManager.flush(AbstractUpdateManager.java:76)
	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.flush(JDBCStoreManager.java:676)
	at org.apache.openjpa.kernel.DelegatingStoreManager.flush(DelegatingStoreManager.java:130)
	at org.apache.openjpa.datacache.DataCacheStoreManager.flush(DataCacheStoreManager.java:540)
	at org.apache.openjpa.kernel.DelegatingStoreManager.flush(DelegatingStoreManager.java:130)
	at org.apache.openjpa.kernel.BrokerImpl.flush(BrokerImpl.java:2116)
	at org.apache.openjpa.kernel.BrokerImpl.flushSafe(BrokerImpl.java:2013)
	at org.apache.openjpa.kernel.BrokerImpl.beforeCompletion(BrokerImpl.java:1931)
	... 24 more



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


[jira] Closed: (OPENJPA-1438) Fail to remove an entity which has derived identity

Posted by "Fay Wang (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/OPENJPA-1438?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Fay Wang closed OPENJPA-1438.
-----------------------------


> Fail to remove an entity which has derived identity
> ---------------------------------------------------
>
>                 Key: OPENJPA-1438
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-1438
>             Project: OpenJPA
>          Issue Type: Bug
>          Components: jdbc
>    Affects Versions: 2.0.0
>            Reporter: Fay Wang
>            Assignee: Fay Wang
>             Fix For: 2.0.0
>
>
> Given the following entity definitions:
> @Entity
> @IdClass(PersonId.class)
> public class MedicalHistory implements Serializable {
>     private static final long serialVersionUID = 1L;
>     @Id
>     @OneToOne
>     private Person patient;
>     private String doctorName;
>           .....
> -------------------------------
> @Entity
> @IdClass(PersonId.class)
> public class Person implements Serializable {
>     @Id
>     String firstName;
>     @Id
>     String lastName;
>     String ssn;
>           ...
> -------------------------------
> public class PersonId implements java.io.Serializable {
>     String firstName;
>     String lastName;
> -------------------------------
> Removing MedicalHistory as shown below throws ClassCastException:
> MedicalHistory newMHistory = em.find(MedicalHistory.class, personId);
> em.remove(newMHistory);
> et.commit();
> Caused by: <openjpa-0.0.0-rnull nonfatal general error> org.apache.openjpa.persistence.PersistenceException: test.Person cannot be cast to java.lang.String
> 	at org.apache.openjpa.kernel.BrokerImpl.beforeCompletion(BrokerImpl.java:1939)
> 	at org.apache.openjpa.kernel.LocalManagedRuntime.commit(LocalManagedRuntime.java:81)
> 	at org.apache.openjpa.kernel.BrokerImpl.commit(BrokerImpl.java:1455)
> 	at org.apache.openjpa.kernel.DelegatingBroker.commit(DelegatingBroker.java:903)
> 	at org.apache.openjpa.persistence.EntityManagerImpl.commit(EntityManagerImpl.java:551)
> 	... 20 more
> Caused by: java.lang.ClassCastException: test.Person cannot be cast to java.lang.String
> 	at org.apache.openjpa.jdbc.sql.DBDictionary.setTyped(DBDictionary.java:1284)
> 	at org.apache.openjpa.jdbc.sql.RowImpl.flush(RowImpl.java:892)
> 	at org.apache.openjpa.jdbc.sql.RowImpl.flush(RowImpl.java:852)
> 	at org.apache.openjpa.jdbc.kernel.PreparedStatementManagerImpl.flushAndUpdate(PreparedStatementManagerImpl.java:114)
> 	at org.apache.openjpa.jdbc.kernel.BatchingPreparedStatementManagerImpl.flushAndUpdate(BatchingPreparedStatementManagerImpl.java:80)
> 	at org.apache.openjpa.jdbc.kernel.PreparedStatementManagerImpl.flushInternal(PreparedStatementManagerImpl.java:97)
> 	at org.apache.openjpa.jdbc.kernel.PreparedStatementManagerImpl.flush(PreparedStatementManagerImpl.java:85)
> 	at org.apache.openjpa.jdbc.kernel.ConstraintUpdateManager.flush(ConstraintUpdateManager.java:550)
> 	at org.apache.openjpa.jdbc.kernel.ConstraintUpdateManager.flush(ConstraintUpdateManager.java:120)
> 	at org.apache.openjpa.jdbc.kernel.BatchingConstraintUpdateManager.flush(BatchingConstraintUpdateManager.java:59)
> 	at org.apache.openjpa.jdbc.kernel.AbstractUpdateManager.flush(AbstractUpdateManager.java:103)
> 	at org.apache.openjpa.jdbc.kernel.AbstractUpdateManager.flush(AbstractUpdateManager.java:76)
> 	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.flush(JDBCStoreManager.java:676)
> 	at org.apache.openjpa.kernel.DelegatingStoreManager.flush(DelegatingStoreManager.java:130)
> 	at org.apache.openjpa.datacache.DataCacheStoreManager.flush(DataCacheStoreManager.java:540)
> 	at org.apache.openjpa.kernel.DelegatingStoreManager.flush(DelegatingStoreManager.java:130)
> 	at org.apache.openjpa.kernel.BrokerImpl.flush(BrokerImpl.java:2116)
> 	at org.apache.openjpa.kernel.BrokerImpl.flushSafe(BrokerImpl.java:2013)
> 	at org.apache.openjpa.kernel.BrokerImpl.beforeCompletion(BrokerImpl.java:1931)
> 	... 24 more

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


[jira] Resolved: (OPENJPA-1438) Fail to remove an entity which has derived identity

Posted by "Fay Wang (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/OPENJPA-1438?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Fay Wang resolved OPENJPA-1438.
-------------------------------

    Resolution: Fixed

> Fail to remove an entity which has derived identity
> ---------------------------------------------------
>
>                 Key: OPENJPA-1438
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-1438
>             Project: OpenJPA
>          Issue Type: Bug
>          Components: jdbc
>    Affects Versions: 2.0.0
>            Reporter: Fay Wang
>            Assignee: Fay Wang
>             Fix For: 2.0.0
>
>
> Given the following entity definitions:
> @Entity
> @IdClass(PersonId.class)
> public class MedicalHistory implements Serializable {
>     private static final long serialVersionUID = 1L;
>     @Id
>     @OneToOne
>     private Person patient;
>     private String doctorName;
>           .....
> -------------------------------
> @Entity
> @IdClass(PersonId.class)
> public class Person implements Serializable {
>     @Id
>     String firstName;
>     @Id
>     String lastName;
>     String ssn;
>           ...
> -------------------------------
> public class PersonId implements java.io.Serializable {
>     String firstName;
>     String lastName;
> -------------------------------
> Removing MedicalHistory as shown below throws ClassCastException:
> MedicalHistory newMHistory = em.find(MedicalHistory.class, personId);
> em.remove(newMHistory);
> et.commit();
> Caused by: <openjpa-0.0.0-rnull nonfatal general error> org.apache.openjpa.persistence.PersistenceException: test.Person cannot be cast to java.lang.String
> 	at org.apache.openjpa.kernel.BrokerImpl.beforeCompletion(BrokerImpl.java:1939)
> 	at org.apache.openjpa.kernel.LocalManagedRuntime.commit(LocalManagedRuntime.java:81)
> 	at org.apache.openjpa.kernel.BrokerImpl.commit(BrokerImpl.java:1455)
> 	at org.apache.openjpa.kernel.DelegatingBroker.commit(DelegatingBroker.java:903)
> 	at org.apache.openjpa.persistence.EntityManagerImpl.commit(EntityManagerImpl.java:551)
> 	... 20 more
> Caused by: java.lang.ClassCastException: test.Person cannot be cast to java.lang.String
> 	at org.apache.openjpa.jdbc.sql.DBDictionary.setTyped(DBDictionary.java:1284)
> 	at org.apache.openjpa.jdbc.sql.RowImpl.flush(RowImpl.java:892)
> 	at org.apache.openjpa.jdbc.sql.RowImpl.flush(RowImpl.java:852)
> 	at org.apache.openjpa.jdbc.kernel.PreparedStatementManagerImpl.flushAndUpdate(PreparedStatementManagerImpl.java:114)
> 	at org.apache.openjpa.jdbc.kernel.BatchingPreparedStatementManagerImpl.flushAndUpdate(BatchingPreparedStatementManagerImpl.java:80)
> 	at org.apache.openjpa.jdbc.kernel.PreparedStatementManagerImpl.flushInternal(PreparedStatementManagerImpl.java:97)
> 	at org.apache.openjpa.jdbc.kernel.PreparedStatementManagerImpl.flush(PreparedStatementManagerImpl.java:85)
> 	at org.apache.openjpa.jdbc.kernel.ConstraintUpdateManager.flush(ConstraintUpdateManager.java:550)
> 	at org.apache.openjpa.jdbc.kernel.ConstraintUpdateManager.flush(ConstraintUpdateManager.java:120)
> 	at org.apache.openjpa.jdbc.kernel.BatchingConstraintUpdateManager.flush(BatchingConstraintUpdateManager.java:59)
> 	at org.apache.openjpa.jdbc.kernel.AbstractUpdateManager.flush(AbstractUpdateManager.java:103)
> 	at org.apache.openjpa.jdbc.kernel.AbstractUpdateManager.flush(AbstractUpdateManager.java:76)
> 	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.flush(JDBCStoreManager.java:676)
> 	at org.apache.openjpa.kernel.DelegatingStoreManager.flush(DelegatingStoreManager.java:130)
> 	at org.apache.openjpa.datacache.DataCacheStoreManager.flush(DataCacheStoreManager.java:540)
> 	at org.apache.openjpa.kernel.DelegatingStoreManager.flush(DelegatingStoreManager.java:130)
> 	at org.apache.openjpa.kernel.BrokerImpl.flush(BrokerImpl.java:2116)
> 	at org.apache.openjpa.kernel.BrokerImpl.flushSafe(BrokerImpl.java:2013)
> 	at org.apache.openjpa.kernel.BrokerImpl.beforeCompletion(BrokerImpl.java:1931)
> 	... 24 more

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