I'll also add that if you look at his second example, he actually
provided a number as a value, it just didn't get quoted as it should.

On Tue, Aug 31, 2010 at 12:17 PM, cliff vaughn <[email protected]> wrote:
> I think there are 2 separate issues. The query substitution should explain 
> the first where he was using the value "true" and it was being turned into 1. 
> The second issue is that NH seems to be looking at the value and deciding to 
> quote it or not based on its type instead of the type of the column.
>
> On Tue, Aug 31, 2010 at 12:07 PM, Diego Mijelshon <[email protected]> 
> wrote:
>> That does 4 specific conversions in HQL queries.
>> It doesn't convert arbitrary strings into numbers in any query method.
>>
>>     Diego
>>
>>
>> On Tue, Aug 31, 2010 at 13:04, cliff vaughn <[email protected]>
>> wrote:
>>>
>>> sure it will if you have the default:
>>>
>>>    <property name="query.substitutions">
>>>      true 1, false 0, yes 'Y', no 'N'
>>>    </property>
>>>
>>> On Tue, Aug 31, 2010 at 12:00 PM, Diego Mijelshon
>>> <[email protected]> wrote:
>>> > Query substitutions won't turn strings into numers.
>>> > There's something else going on.
>>> >
>>> >     Diego
>>> >
>>> >
>>> > On Tue, Aug 31, 2010 at 12:58, cliff vaughn <[email protected]>
>>> > wrote:
>>> >>
>>> >> have you seen my last message.  Look at hibernate.cfg.xml and the
>>> >> query.substitutions element.
>>> >>
>>> >> On Tue, Aug 31, 2010 at 11:49 AM, jcomet <[email protected]>
>>> >> wrote:
>>> >> > It isn't just booleans, either:
>>> >> >
>>> >> >            IList<Employee> emps = _EmployeeDAO.GetSession()
>>> >> >                .CreateCriteria<Employee>()
>>> >> >                .Add(Restrictions.Eq("FirstName","23.56"))
>>> >> >                .List<Employee>();
>>> >> >
>>> >> > yields
>>> >> >
>>> >> > SELECT this_.ID                    as ID10_0_,
>>> >> >       this_.LastName              as LastName10_0_,
>>> >> >       this_.FirstName             as FirstName10_0_,
>>> >> > FROM   Employee this_
>>> >> > WHERE  this_.FirstName = 23.56 /* @p0 */
>>> >> >
>>> >> >
>>> >> > yikes!
>>> >> >
>>> >> >
>>> >> > On Aug 31, 11:41 am, jcomet <[email protected]> wrote:
>>> >> >> I have created some new tests using NH 3, and I consistently get the
>>> >> >> same behavior.  When adding a restriction to a string property, NH
>>> >> >> converts the string to a bit/int if it can.  For example, this
>>> >> >> query:
>>> >> >>
>>> >> >>             IList<Employee> emps = _EmployeeDAO.GetSession()
>>> >> >>                 .CreateCriteria<Employee>()
>>> >> >>                 .Add(Restrictions.Eq("FirstName","true"))
>>> >> >>                 .List<Employee>();
>>> >> >>
>>> >> >> Results in this:
>>> >> >>
>>> >> >> SELECT this_.ID                    as ID10_0_,
>>> >> >>        this_.LastName              as LastName10_0_,
>>> >> >>        this_.FirstName             as FirstName10_0_,
>>> >> >> FROM   Employee this_
>>> >> >> WHERE  this_.FirstName = 1 /* @p0 */
>>> >> >>
>>> >> >> On Aug 31, 11:30 am, jcomet <[email protected]> wrote:
>>> >> >>
>>> >> >>
>>> >> >>
>>> >> >> > I get the same behavior in NH 3.
>>> >> >>
>>> >> >> > On Aug 31, 11:06 am, Diego Mijelshon <[email protected]>
>>> >> >> > wrote:
>>> >> >>
>>> >> >> > > I couldn't reproduce that in NH 3. Can you check with it?
>>> >> >>
>>> >> >> > >     Diego
>>> >> >>
>>> >> >> > > On Tue, Aug 31, 2010 at 11:45, jcomet <[email protected]>
>>> >> >> > > wrote:
>>> >> >> > > > When add a  restriction on a particular string property with a
>>> >> >> > > > value
>>> >> >> > > > of "true" or "false", NH (2.1.2.4000) changes it to a bit
>>> >> >> > > > value.
>>> >> >> > > >  See
>>> >> >> > > > example class, hbm, query and resulting SQL.  Note in the last
>>> >> >> > > > snip,
>>> >> >> > > > the line "WHERE this_.SettingValue = 1" should read "WHERE
>>> >> >> > > > this_.SettingValue = 'true'.   If I change the restriction
>>> >> >> > > > from
>>> >> >> > > > "true"
>>> >> >> > > > to "poop", the NH correctly surrounds poop with quotes.  My
>>> >> >> > > > conclusion
>>> >> >> > > > is that NH tries to convert the string value to boolean, and
>>> >> >> > > > if
>>> >> >> > > > it
>>> >> >> > > > can, it does so using the value substitution from the session
>>> >> >> > > > factory
>>> >> >> > > > configuration.  This is curious, since NH knows that column is
>>> >> >> > > > a
>>> >> >> > > > string from the mapping, so why would it need to guess?   Is
>>> >> >> > > > there a
>>> >> >> > > > way to inform NH not to do this?
>>> >> >>
>>> >> >> > > > namespace MYAPP.Core.Domain
>>> >> >> > > > {
>>> >> >> > > >    public class EmployeeSetting
>>> >> >> > > >    {
>>> >> >> > > >        public virtual int ID { get; set; }
>>> >> >> > > >        public virtual string SettingValue { get; set; }
>>> >> >> > > >        public virtual Employee Employee { get; set; }
>>> >> >> > > >        public virtual SettingType SettingType { get; set; }
>>> >> >> > > >    }
>>> >> >> > > > }
>>> >> >>
>>> >> >> > > > <?xml version="1.0" encoding="utf-8" ?>
>>> >> >> > > > <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
>>> >> >> > > > assembly="MYAPP.Core" namespace="MYAPP.Core.Domain">
>>> >> >> > > >  <class name="MYAPP.Core.Domain.EmployeeSetting,MYAPP.Core"
>>> >> >> > > > table="EmployeeSetting">
>>> >> >> > > >    <id name="ID" column="ID" type="Int32" unsaved-value="0">
>>> >> >> > > >      <generator class="native" />
>>> >> >> > > >    </id>
>>> >> >> > > >    <property name="SettingType" column="SettingType"
>>> >> >> > > > type="MYAPP.Core.Domain.SettingType, MYAPP.Core"
>>> >> >> > > > not-null="false"
>>> >> >> > > > />
>>> >> >> > > >    <property name="SettingValue" column="SettingValue"
>>> >> >> > > > type="string"
>>> >> >> > > > not-null="false"  />
>>> >> >> > > >    <many-to-one name="Employee" column="EmployeeID"
>>> >> >> > > > class="MYAPP.Core.Domain.Employee,MYAPP.Core.Domain"/>
>>> >> >> > > >  </class>
>>> >> >> > > > </hibernate-mapping>
>>> >> >>
>>> >> >> > > > IList<EmployeeSetting> es = _EmployeeSettingDAO.GetSession()
>>> >> >> > > >        .CreateCriteria<EmployeeSetting>()
>>> >> >> > > >                .Add(Restrictions.Eq("SettingValue", "true"))
>>> >> >> > > >                .Add(Restrictions.Eq("SettingType",
>>> >> >> > > > SettingType.ReceiveAlerts))
>>> >> >> > > >                .List<EmployeeSetting>();
>>> >> >>
>>> >> >> > > > SELECT this_.ID           as ID8_0_,
>>> >> >> > > >       this_.SettingType  as SettingID8_0_,
>>> >> >> > > >       this_.SettingValue as SettingV3_8_0_,
>>> >> >> > > >       this_.EmployeeID   as EmployeeID8_0_
>>> >> >> > > > FROM   EmployeeSetting this_
>>> >> >> > > > WHERE  this_.SettingValue = 1 /* @p0 */
>>> >> >> > > >       and this_.SettingType = 1 /* @p1 */
>>> >> >>
>>> >> >> > > > --
>>> >> >> > > > You received this message because you are subscribed to the
>>> >> >> > > > Google Groups
>>> >> >> > > > "nhusers" group.
>>> >> >> > > > To post to this group, send email to [email protected].
>>> >> >> > > > To unsubscribe from this group, send email to
>>> >> >> > > >
>>> >> >> > > >
>>> >> >> > > > [email protected]<nhusers%[email protected]­­­>
>>> >> >> > > > .
>>> >> >> > > > For more options, visit this group at
>>> >> >> > > >http://groups.google.com/group/nhusers?hl=en.-Hidequoted text -
>>> >> >>
>>> >> >> > > - Show quoted text -- Hide quoted text -
>>> >> >>
>>> >> >> > - Show quoted text -- Hide quoted text -
>>> >> >>
>>> >> >> - Show quoted text -
>>> >> >
>>> >> > --
>>> >> > You received this message because you are subscribed to the Google
>>> >> > Groups "nhusers" group.
>>> >> > To post to this group, send email to [email protected].
>>> >> > To unsubscribe from this group, send email to
>>> >> > [email protected].
>>> >> > For more options, visit this group at
>>> >> > http://groups.google.com/group/nhusers?hl=en.
>>> >> >
>>> >> >
>>> >>
>>> >>
>>> >>
>>> >> --
>>> >> thanks
>>> >>
>>> >> cliff
>>> >>
>>> >> --
>>> >> You received this message because you are subscribed to the Google
>>> >> Groups
>>> >> "nhusers" group.
>>> >> To post to this group, send email to [email protected].
>>> >> To unsubscribe from this group, send email to
>>> >> [email protected].
>>> >> For more options, visit this group at
>>> >> http://groups.google.com/group/nhusers?hl=en.
>>> >>
>>> >
>>> > --
>>> > You received this message because you are subscribed to the Google
>>> > Groups
>>> > "nhusers" group.
>>> > To post to this group, send email to [email protected].
>>> > To unsubscribe from this group, send email to
>>> > [email protected].
>>> > For more options, visit this group at
>>> > http://groups.google.com/group/nhusers?hl=en.
>>> >
>>>
>>>
>>>
>>> --
>>> thanks
>>>
>>> cliff
>>>
>>> --
>>> You received this message because you are subscribed to the Google Groups
>>> "nhusers" group.
>>> To post to this group, send email to [email protected].
>>> To unsubscribe from this group, send email to
>>> [email protected].
>>> For more options, visit this group at
>>> http://groups.google.com/group/nhusers?hl=en.
>>>
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "nhusers" group.
>> To post to this group, send email to [email protected].
>> To unsubscribe from this group, send email to
>> [email protected].
>> For more options, visit this group at
>> http://groups.google.com/group/nhusers?hl=en.
>>
>
>
>
> --
> thanks
>
> cliff
>
>



-- 
thanks

cliff

-- 
You received this message because you are subscribed to the Google Groups 
"nhusers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/nhusers?hl=en.

Reply via email to