Groovy Sql et aide SimpleDateFormat
-
20-09-2019 - |
Question
Dans ma base de données, j'ai un type de colonne:. Datetime
Exemple de données de la colonne: 2009-02-03 19: 04: 23.0
J'utilise: SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S");
pour définir mon format de date
J'utilise groovySQL lire les tableaux et pour chaque lignes, je suis d'ajouter un nouvel objet SampleJ (mis en correspondance avec une nouvelle table - SampleJ).
Voici ma fermeture:
def sampleQuery(int dataset) {
sqlModule.eachRow("""
select b.*
from dataset a, array_data b
where dataset_id = "${dataset}"
and a.array_data_id = b.array_data_id ;""")
{
def addSample= new SampleJ(it.toRowResult())
addSample.id = "${it.array_data_id}" as int
addSample.dateCreated = dateFormat.parse("${it.date_created}")
//addSample...(more columns)
addSample.save()
}
}
Quand je vérifie, ma table temporaire "SampleJ", toute ma date ne correspond pas à "$ {} it.date_created".
Toutes les dates sont à "new Date ()" (à temps d'exécution de fermeture).
Via débogueur:
"$ {} It.date_created" est définie comme "3 février 2009 mar 19:04:23 CST", ce qui correspond à (2009-02-03 19: 04: 23,0). Je devrais avoir cette date!
Comment puis-je résoudre ce problème? Je n'ai pas d'erreur, les dates juste mal.
Est-il un moyen facile de définir mes dates SampleJ?
Une alternative à addSample.dateCreated = dateFormat.parse ( "$ {} it.date_created")?
La solution
Grails sera sur le DATE_CREATED à l'heure actuelle par convention, vous devez ajouter
static mapping = {
autoTimestamp false
}
à SampleJ.
Vous pouvez également renommer dateCreated à autre chose.