gorm SQL Server datetime eq сравнение не работает - PullRequest
0 голосов
/ 10 декабря 2018

У меня есть поле Date на доменном объекте:

class Observation {
    Date observationTime
}

Значения заполняются и сохраняются в коде:

observation.observationTime = new Date()
observation.save()

У меня есть запрос, находитразличные значения этого поля:

distinctVals = Observation.executeQuery("select distinct o.observationTime from Observation o ..."

И еще один запрос для домена с использованием этих результатов:

Observation.createCriteria().list () {
    or {
        distinctVals.each { val -> 
           eq("observationTime", val)
        }
    }

Это было написано и работает в grails 2.3.4 с использованием MySql, где тип данных дляНаблюдение: время - это отметка времени.

Я перехожу на Grails 3.3.8 и Microsoft SQL Server 2016, где типом данных является дата-время, а второй запрос не возвращает результаты.

Отладчик показывает различные значения, содержащиеОбъект метки времени, и если я logSql и вставляю значение в SQL Ops Studio, он возвращает соответствующие результаты:

select * 
from observation this_ 
where this_.observation_time='2018-09-30 16:32:35.773'

TLDR : я запрашиваю столбец datetime, который возвращает метку времени, затемвставьте эти временные метки обратно в запрос равенства в той же таблице и не получите результатов.

Так что я думаю, что это проблема сопоставления или преобразования типов при использовании SQL Server, но я не уверенправильное решение.Любые предложения приветствуются.Спасибо!

...