[jboss-jira] [JBoss JIRA] Updated: (JBAS-6597) CMP findByPrimaryKey() broken for composite primary keys

Dimitris Andreadis (JIRA) jira-events at lists.jboss.org
Tue Mar 10 13:30:22 EDT 2009


     [ https://jira.jboss.org/jira/browse/JBAS-6597?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Dimitris Andreadis updated JBAS-6597:
-------------------------------------

    Fix Version/s:     (was: JBossAS-5.0.0.CR1)


Please, don't set the fix version. Also, you should probably be testing against AS 5.0.1.GA.

> CMP findByPrimaryKey() broken for composite primary keys
> --------------------------------------------------------
>
>                 Key: JBAS-6597
>                 URL: https://jira.jboss.org/jira/browse/JBAS-6597
>             Project: JBoss Application Server
>          Issue Type: Patch
>      Security Level: Public(Everyone can see) 
>          Components: CMP service
>    Affects Versions: JBossAS-5.0.0.CR1
>         Environment: Windows, JBoss 5.0.0CR1 
>            Reporter: Markus Cozowicz
>            Assignee: Alexey Loubyansky
>
> findByPrimaryKey() in CMP for an entity bean will re-use the first property as query parameter of a composite primary key for all fields in the SQL query. Our code worked in JBoss 3.2.3 and got broken in 5.0.0CR1. 
> In ejb-jar.xml we have 
> - prim-key-class 
> - primkey-field 
> the prim-key-class exposes 3 properties (1 string, 2 integers). Through tracing and debugging we saw that the query gets constructed and parameter types are inferred correctly. 
> We compared QueryParameter.java from 3.2.3, 5.0.0 CR1 and v85552 (trunk as of today) and think that functionality got lost (please not the additional "else" for the "property != null" case. We therefore propose the following patch (which at least solved our problem): 
> http://anonsvn.jboss.org/repos/jbossas/trunk/server/src/main/org/jboss/ejb/plugins/cmp/jdbc/QueryParameter.java 
> --- QueryParameter.java (Revision 85552) 
> +++ QueryParameter.java (Arbeitskopie) 
> @@ -320,10 +320,18 @@ 
>           } 
>           arg = field.getPrimaryKeyValue(arg); 
> - // use mapper 
> - final JDBCType jdbcType = field.getJDBCType(); 
> - arg = jdbcType.getColumnValue(0, arg); 
> - param = jdbcType.getParameterSetter()[0]; 
> + if(property != null) 
> + { 
> + arg = property.getColumnValue(arg); 
> + param = property.getParameterSetter(); 
> + } 
> + else 
> + { 
> + // use mapper 
> + final JDBCType jdbcType = field.getJDBCType(); 
> + arg = jdbcType.getColumnValue(0, arg); 
> + param = jdbcType.getParameterSetter()[0]; 
> + } 
>        } 
>        else if(property != null) 
>        {
> (this was original created here: https://jira.jboss.org/jira/browse/ASPATCH-411)

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        



More information about the jboss-jira mailing list