[ 
https://issues.apache.org/jira/browse/JDO-842?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17879028#comment-17879028
 ] 

Craig L Russell commented on JDO-842:
-------------------------------------

The public functions of JDOQLTypedQuery candidate and variable should be 
deprecated. In order to use them, the results must be cast to the appropriate 
metadata (Q-class), and casting does not work for persistent subclasses.

The candidate and variable methods of the Q-class should require a String 
parameter and return a new instance. There is no reason to return a shared 
instance because the multi-threaded behavior of these instances when used in 
queries is not defined. If users want access to metadata outside the scope of 
queries, they can set up their own shared instances without relying on 
specified behavior. 

> Q class specification of candidate() method
> -------------------------------------------
>
>                 Key: JDO-842
>                 URL: https://issues.apache.org/jira/browse/JDO-842
>             Project: JDO
>          Issue Type: Bug
>          Components: specification
>    Affects Versions: JDO 3.2.1
>            Reporter: Tilmann Zäschke
>            Priority: Major
>
> The specification does not clearly specify the behavior of the Q classes in 
> Section "14.10 Typesafe Query Construction"
> The examples in section "14.11 Examples" use the following methods of 
> generated Q-classes:
>  * candidate()
>  * candidate(String)
>  * variable(String)
> Both candidate methods are used in the query examples, but they are not 
> specified as part of the typesafe query support.
> Specific points that we should possibly mention:
>  * These methods should allow Q classes to be used concurrently. 
> Specifically, they should all return *new* instances. The current 
> specification allows returning shared multiple instances which causes 
> problems when used concurrently. (the reference implementation currently does 
> this for 'candidate()').
>  * The reference implementation also has a 'parameter(String)' method. We may 
> want to add this to the spec.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to