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

brian yoder commented on OPENJPA-2503:
--------------------------------------

Here is a sample of the issue, the constant value 0 is a number, so should not 
have single quotes.  This was working in OpenJPA 1.2, but is broken in 2.3.0.

@JoinColumn(name="business_unit_id", referencedColumnName="0")

I would like to propose that ALL constants should be wrapped with bracket - 
like "{0}" - or "{'string value'}" so that you can just look for the bracket to 
see if this is a constant or not (so it works with string OR number).  I have 
made this change as shown below and will try to check in this change if it 
looks OK.

    private static final char SINGLE_QUOTE = '\'';
    private static final char BRACE        = '{';
    
    protected void setTargetIdentifier(Column col, String refColumnName) {
        
        if (refColumnName.charAt(0) == SINGLE_QUOTE) {
                
col.setTargetIdentifier(DBIdentifier.newConstant(refColumnName));
                
        } else if (refColumnName.charAt(0) == BRACE) {                  
                String numericValue = 
refColumnName.substring(1,refColumnName.length()-1);
                System.out.println("...TESTING..." + numericValue);
                col.setTargetIdentifier(DBIdentifier.newConstant(numericValue));
                
        } else {
                col.setTargetIdentifier(DBIdentifier.newColumn(refColumnName, 
delimit()));
        }
    }

> Numeric non-standard joins with constant column values broken
> -------------------------------------------------------------
>
>                 Key: OPENJPA-2503
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-2503
>             Project: OpenJPA
>          Issue Type: Bug
>          Components: jdbc, kernel
>    Affects Versions: 2.3.0
>            Reporter: brian yoder
>            Assignee: Pinaki Poddar
>
> The non-standard join can use a numeric value, rather than a column or string 
> constant. This behavior is regressed. The likely cause of this regression is 
> new delimiting support for schema elements introduced in JPA 2.0. The 
> constant column value used to be detected during schema definition based on 
> the assumption of the name being enclosed in single-quote. Due to 
> introduction of delimiting capability, the constant value is now enclosed in 
> double-quote followed by a single-quote. 
> While the string constant (single quote) has been fixed, the numeric constant 
> (would not have single quote) is still broken.
> The visible effect is failure to define schema for non-standard join with 
> constant NUMERIC values.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to