persistence@glassfish.java.net

Re: issue 600, 832, 887 case sensitivity

From: Christopher Delahunt <christopher.delahunt_at_oracle.com>
Date: Fri, 8 Sep 2006 13:12:07 -0400

Hello June,

I did not answer as I was trying to research better options. As it is,
putting a global setting in the persistence.xml file may seem illogical, but
it ensures that it is known that the contained persistence unit requires
this functioanlity. It would also allow us to changing the property in the
future to only affect persistence units with the property defined, without
users having to make changes to their applications.

Other solutions/suggestions are welcome.


Best Regards,
Chris

----- Original Message -----
From: "Rebecca Parks" <June.Parks_at_Sun.COM>
To: <persistence_at_glassfish.dev.java.net>
Sent: Friday, September 08, 2006 12:17 PM
Subject: Re: issue 600, 832, 887 case sensitivity


> No one has answered my question.
>
> June
>
> Rebecca Parks wrote On 09/07/06 12:56,:
>
>> If these properties are global, how do you set then in GlassFish? It
>> would be illogical to set them in the persistence.xml file unless they
>> were specific to a persistence unit.
>>
>> June
>>
>> Marina Vatkina wrote On 09/07/06 12:40,:
>>
>>> Chris,
>>>
>>> Can it be at least per platform? Otherwise we'll cause even more
>>> confusion
>>> for those apps that span multiple databases.
>>>
>>> Also, you start with a "toplink.case-sensitive" or
>>> "toplink.jdbc.case-sensitive" property, and then mention
>>> "toplink.ignore-field-case". How do they relate?
>>>
>>> thanks,
>>> -marina
>>>
>>>
>>> Christopher Delahunt wrote:
>>>
>>>> Hello,
>>>>
>>>> Glassfish has a number of open issues (gf bugs 600, 832 and 887 are
>>>> some examples) that have to do with field case sensitivitiy. I found
>>>> that there is already a static "shouldIgnoreCaseOnFieldComparisons"
>>>> flag on the DatabasePlatform that ensures field comparisons are done
>>>> using equalsIgnoreCase instead of equals - it currently defaults to
>>>> false.
>>>>
>>>> The fix will be to set this flag to true on the DatabasePlatform class,
>>>> and allow users to override it using either a "toplink.case-sensitive"
>>>> or "toplink.jdbc.case-sensitive" property. For users of case sensitive
>>>> databases, things will still work by default, as TopLink will still
>>>> pass the field names as defined to the driver and for them, case will
>>>> have to match or the database will complain or return unexpected
>>>> results. Users of case sensitive databases should only need to set the
>>>> flag to false if they use same string multiple times but with different
>>>> case in the database.
>>>>
>>>> The draw back is that the "toplink.ignore-field-case" setting will be
>>>> global, so will affect persistence units in the JVM. So there is no
>>>> way to override it for only one persistence unit.
>>>>
>>>> Please let me know if there are any concerns or if either of the
>>>> property names do not work, as I'd like to get this in tomorrow.
>>>>
>>>> Best Regards,
>>>> Chris
>>>
>>>
>>
>>
>