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



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", 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