[ 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