openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Fay Wang (JIRA)" <j...@apache.org>
Subject [jira] Updated: (OPENJPA-660) ClassCastException when using OneToMany Relation and collection is subclass using Discriminator with SINGLE_TABLE strategy.
Date Fri, 18 Jul 2008 15:28:31 GMT

     [ https://issues.apache.org/jira/browse/OPENJPA-660?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Fay Wang updated OPENJPA-660:
-----------------------------

    Attachment: patch.txt

The attached patch fixes this problem. To load a toMany relationship, there is normally a
foreign key corresponing to the primary key in the owner class in the where clause. The value
of the primary key in the owner class is passed via the argument sm to the load method.  The
parameter problem exposed by OPENJPA-660 is the missing non-foreign key parameters. The fix
is to detect any non-FK parameters and add them to the parameter list. 

> ClassCastException when using OneToMany Relation and collection is subclass using Discriminator
with SINGLE_TABLE strategy.
> ---------------------------------------------------------------------------------------------------------------------------
>
>                 Key: OPENJPA-660
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-660
>             Project: OpenJPA
>          Issue Type: Bug
>          Components: jpa
>    Affects Versions: 1.0.0, 1.0.1, 1.0.2, 1.0.3, 1.0.4, 1.1.0, 1.1.1, 1.2.0
>            Reporter: Vikram Bhatia
>         Attachments: patch.txt, testInheritance.zip
>
>
> If the entity has OneToMany relation and collection is declared as subclass which uses
SINGLE_TABLE inheritance strategy, it fetches all rows irrespective of Discriminator value
and throws ClassCastException.
> There is entity Department (table dept) having OneToMany relation with another entity
FullTimeEmployee. 
>   @OneToMany (mappedBy="dept", cascade=CascadeType.ALL)
>   private Collection<FullTimeEmployee> fullTimeEmployees;
> There is abstract class Employee with
> @Inheritance(strategy=InheritanceType.SINGLE_TABLE)
> @DiscriminatorColumn(name="TYPE")
> There are two entity classes FullTimeEmployee and PartTimeEmployee which extends Employee
(table emp) with Discriminator values 'F' and 'P' respectively.
> Now, suppose emp table contains 2 rows of PartTimeEmployee and 2 rows of FullTimeEmployee
and if test class fetches Department object and calls dept.getFullTimeEmployees(), it throws
ClassCastException as it gets 4 rows and doesn't use discriminator and subclass type while
generating SQL query.

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


Mime
View raw message