On most databases (except Postgres), Hibernate does case-insensitive like like lower(caption) like ? where ? is the result of "%%".toLowerCase() . As you can see, in your case it can produce false only if the results of the lower() database do not match the results of String.toLowerCase() . This can happen, for example, if the database locale configuration does not support case conversion for Cyrillic characters.
source share