2010-02-15 6 views
0

Dans ma base de données, j'ai un type de colonne: datetime.
Exemple de données de colonne: 2009-02-03 19: 04: 23.0Groovy Sql et l'aide SimpleDateFormat

J'utilise: SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S"); pour définir mon format de date. J'utilise groovySQL pour lire des tables et pour chaque ligne, j'ajoute un nouvel objet SampleJ (mappé à 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 définies sur "new Date()" (pour fermer le temps d'exécution).

Via débogueur:
"$ {} it.date_created" est définie comme "03 Tue Feb 2009 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, juste de mauvaises dates.
Existe-t-il un moyen facile de définir mes dates dans SampleJ?
Une alternative à addSample.dateCreated = dateFormat.parse ("$ {it.date_created}")?

Répondre

1

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.

+0

Vous avez raison, mon problème est dû à dateCreated, en utilisant dateCreatedSample je n'ai aucun problème! GORM a des propriétés dateCreated et lastUpdated, voici mon erreur! Merci. –