Je lance une instruction sql essayant d'obtenir un objet avec un champ Date et génère une erreur. Je peux enregistrer sans aucun problème dans ma base de données, mais je ne peux pas récupérer les données et créer des objets.Erreur: L'objet de la classe String, issu du mappage, n'a pas pu être converti en [classe java.sql.Timestamp]
Erreur:
Exception [TOPLINK-3002] (Oracle TopLink Essentials - 2.0 (Build b41-beta2 (03/30/2007))): oracle.toplink.essentials.exceptions.ConversionException
Exception Description: The object [https://stackoverflow.com/questions/43551744/php-function-error-object-of-class-pdostatement09/06/17 15:05:08,022000000], of class [class java.lang.String], from mapping [oracle.toplink.essentials.mappings.DirectToFieldMapping[fecha_cambio-->SGSI_DOCUMENTOS.FECHA_CAMBIO]] with descriptor [RelationalDescriptor(com.dominion.procop.sgsi.entidades.DocumentoOnline --> [DatabaseTable(SGSI_DOCUMENTOS)])], could not be converted to [class java.sql.Timestamp].
at oracle.toplink.essentials.exceptions.ConversionException.incorrectTimestampFormat(ConversionException.java:99)
requête qui jette erreur:
@NamedQuery(name="ProyContDocumentos.getDocumentosPorPC", query="SELECT p.documento FROM ProyContDocumentos p " +
"WHERE p.idProyecto = :idProyecto AND p.idControl = :idControl ORDER BY p.idDocumento ASC"),
DocumentoOnline:
@Entity
@Table(name = "SGSI_DOCUMENTOS")
@NamedQueries({
@NamedQuery(name="DocumentoOnline.getAll", query="SELECT d FROM DocumentoOnline d ORDER BY d.id ASC")
})
public class DocumentoOnline extends EntidadBase {
private static final long serialVersionUID = 6891627122405312774L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id_documento")
private int id;
@Column(name = "titulo", nullable = false, length = 3000)
private String titulo;
@Column(name = "descripcion", nullable = false, length = 3000)
private String descripcion;
@Column(nullable = false)
@Temporal(TemporalType.TIMESTAMP)
private Date fecha_cambio;
@Column(name = "contenido", nullable = false, length = 4000)
private String contenido;
/*
* GETTERS Y SETTERS
*/
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getTitulo() {
return titulo;
}
public void setTitulo(String titulo) {
this.titulo = titulo;
}
public String getDescripcion() {
return descripcion;
}
public void setDescripcion(String descripcion) {
this.descripcion = descripcion;
}
public Date getFecha_cambio() {
return fecha_cambio;
}
public void setFecha_cambio(Date fecha_cambio) {
this.fecha_cambio = fecha_cambio;
}
public String getContenido() {
return contenido;
}
public void setContenido(String contenido) {
this.contenido = contenido;
}
@Override
public String toString() {
return "DocumentoOnline [id=" + id + ", titulo=" + titulo + ", descripcion=" + descripcion + ", fecha_cambio="
+ fecha_cambio + ", contenido=" + contenido + "]";
}
}
Le da tabase:
Column Name.........Data type...length..Allow Nulls
ID_DOCUMENTO........NUMBER..............false
TITULO..............VARCHAR2....4000....false
DESCRIPCION.........VARCHAR2....4000....false
FECHA_CAMBIO........VARCHAR2....1000....false
CONTENIDO...........VARCHAR2....4000....true
Que puis-je faire pour analyser cette chaîne à ce jour() et créer mon DocumentoOnline objet? Cordialement.
Le message d'erreur semble tout à fait clair pour moi, votre chaîne a un peu plus de juste l'horodatage dedans: 'https://stackoverflow.com/questions/43551744/php-function-error-object-of-class-pdostatement09/06/17 15: 05: 08,022000000'. Je ne sais pas pourquoi il inclut l'URL de [cette question: Erreur de fonction Php (Objet de la classe PDOStatement)] (https://stackoverflow.com/questions/43551744/php-function-error-object-of-class- pdostatement), je suppose que ça vient de votre base de données? –
Peut-être devriez-vous nous faire savoir à quoi ressemble votre table de base de données (SGSI_DOCUMENTOS)? Types de données de colonne et à quoi ressemble la ligne lorsque vous interrogez votre base de données Oracle directement. –
@ OleV.V., Mis à jour avec les lignes de SGSI_DOCUMENTOS. Maintenant, je vois le type de fecha_cambio est varchar2 et non timestamp ... –