Impossible de convertir de '0000-00-00 00:00:00' de TIMESTAMP
la définition d'un champ
/** Date. */
@Column(columnDefinition = "datetime")
private Date date;
setter
public void setDate(final Date date) {
DateFormat dfmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
this.date = dfmt.parse(dfmt.format(date));
} catch (ParseException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}
}
Quelqu'un a une idée de comment convertir "zéro jour" dans la bonne valeur ?
Parce que j'ai l'erreur:
Cannot convert value '0000-00-00 00:00:00' from column 13 to TIMESTAMP
Et même si j'ai mis "par défaut" sur le terrain et setter comme ceci:
/** Date. */
@Column
private Date date;
public void setDate(final Date date) {
this.date = date;
}
Je vais encore avoir le même problème....
- Il me semble que 0000-00-00 00:00:00 ne correspondent à aucun moment dans le temps, et donc, fondamentalement, ne peut pas être convertie en une valeur d'horodatage. Quel est le comportement que vous vouliez? Voulez-vous convertir le non valide de date ISO sur une valeur par défaut?
- la prochaine étape après je reçois de données(il y a plus d'une colonne dans le tableau) à partir de la table est d'écrire cela dans le langage XML, mais(!) je ne vais pas écrire la Date de valeur en XML, donc, je veux juste récupérer les données de la table et après alors que je n'appellerai jamais getDate() la méthode.
- "Voulez-vous convertir le non valide de date ISO sur une valeur par défaut?" - oui, si c'est possible...
Vous devez vous connecter pour publier un commentaire.
Je vais prendre un sauvage suppose ici que vous utilisez MySQL : -)), Il utilise le "zéro dates" comme spécial réservé - malheureusement, JDBC ne peut pas gérer par défaut.
La solution est de spécifier "zeroDateTimeBehavior=convertToNull" comme paramètre de votre connexion MySQL (que ce soit dans la source de données d'URL ou comme une propriété supplémentaire), par exemple:
Ce sera la cause de toutes ces valeurs à extraire que les valeurs Null.
Je ne comprends pas le point dans votre code, où vous format ensuite d'analyser de nouveau un jour. Cela semble être une opération identique. Peut-être que vous pourriez préciser?
Si vous voulez donner une valeur par défaut à une date, vous pouvez faire :
Remarque : l'annotation sont optionnels, ici, je n'ai pas les ajouter.
Dans ce code, vous pouvez remplacer ce que vous voulez à la condition, et la valeur par défaut.
Vous pouvez également ajouter une semblable setter, qui prendrait un argument de type Chaîne, et à vérifier pour votre spécial "00000..." de la valeur. Cela permettrait pour le réglage du champ, soit à une Date ou à une Chaîne.