У меня была такая же проблема при обновлении с Sybase до SQLServer. Поле в моем сценарии было целочисленным полем, которое использовалось для хранения даты с 1970-01-01. Функция DATEADD использовалась для преобразования этого целого числа в подлинную дату, поэтому у нас было хорошее представление через отображенные объекты гибернации.
Мое исходное отображение для этого поля было следующим:
<property name="lostDate" type="date">
<formula>dateadd(dd, lost_date, '01-JAN-1970')</formula>
</property>
Это привело к проблеме, которую вы описали в вопросе, где полученный sql, переданный в базу данных:
dateadd( table0_.dd, table0_.lost_date, '01-JAN-1970')
Обновление сопоставления для включения ключевого слова dateadd dd в двойные кавычки решило эту проблему для меня.
<property name="lostDate" type="date">
<formula>dateadd("dd", lost_date, '01-JAN-1970')</formula>
</property>
SQL Server 2008 принял сгенерированный SQL ниже и выполнил как ожидалось.
dateadd("dd", table0_.lost_date, '01-JAN-1970')