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

Karl PIhlblad commented on OPENJPA-2086:
----------------------------------------

After some investigation, it seems as if the nchar information is gathered from 
the @Column( columnDefintion ) attribute.

 However, The documentation states that the attribute "is only used by vendors 
that support creating tables from your mapping metadata.",
 and nothing is mentioned in the OracleDictionary properties section.

 Regarding setFixedChar; The type information doesn't seem to be available for 
dynamic columns,
 as the type seems to be set from a "template" VARCHAR(255).  I suppose it 
means "a big string" :-)
                
> OracleDictionary  setFixed and setFormOfUse(NCLOB) are not really doing what 
> they should.
> -----------------------------------------------------------------------------------------
>
>                 Key: OPENJPA-2086
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-2086
>             Project: OpenJPA
>          Issue Type: Bug
>          Components: jdbc
>    Affects Versions: 2.1.1, 2.2.0
>         Environment: Oracle 9g, 10g and 11g
>            Reporter: Karl PIhlblad
>            Priority: Minor
>              Labels: charset, nchar, openjpa, oracle
>
> The setString() method in the OracleDictionary tries to be smart and and look 
> up the column type, and detect and apply nchar and/or fixed char semantics.
> However, I believe that the type information is normally not present for 
> queries, and the functions are never called.
> That means that characters outside the database character set will be lost 
> during translation, and that comparison on CHAR (fixed length) columns will 
> not match if 
> the arguments are not padded to the column length.
>  
> I suggest that the special nchar handling is removed as it is not working 
> properly. The only "reliable" option is to set the connection property 
> oracle.jdbc.defaultNChar=true,
> as it would be neigh impossible to get this right in an automatic way.
> (Actually, the sensible option is to convert the database to AL32UTF8, and 
> not use nchars at all since Oracles nchar handling seems to be problematic. )
> Further as the fixedString handling also does not work without type 
> information, the dictionary could either always, or depending on a flag,  
> call the setFixedChar() method, or just rely on the connection parameter 
> "fixedString" (and use setObject), avoiding the complexity (and the cost of 
> reflection calls)  altogether.
>  

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to