Troubles with JPA Query using Timestamp
eclipselink, java, jpa, timestamp
Solution
It looks like you are comparing c.date which is a Date (Timestamp) with a String, as you are setting the nd in the string query, and surrounded by single quotes. You should use a named parameter, and set the nd variable into that parameter.
Query qr= em.createQuery("SELECT c FROM Coordonnees c WHERE c.date > :nd");
qr.setParameter("nd", nd);
Problem
my problem is a bit similar to this: I want to retrieve rows whose date doesn't has more than 20 minutes compared with the current date time, my source code: ``` EntityManagerFactory emf=Persistence.createEntityManagerFactory("JavaApplication21PU"); CoordonneesJpaController cjc=new CoordonneesJpaController(emf); Timestamp nd=new Timestamp(System.currentTimeMillis());//now nd.setMinutes(nd.getMinutes()-20); EntityManager em = getEntityManager(); Query qr= em.createQuery("SELECT c FROM Coordonnees c WHERE c.date > '"+nd+"'"); java.util.List<Coordonnees> lC=qr.getResultList(); ``` My entity: ``` public class Coordonnees implements Serializable { //some code... @Basic(optional = false) @Column(name = "DATE", nullable = false) @Temporal(TemporalType.TIMESTAMP) private Date date; ``` when I run this code: ``` Exception in thread "main" Local Exception Stack: Exception [EclipseLink-3002] (Eclipse Persistence Services - 2.3.0.v20110604-r9504): org.eclipse.persistence.exceptions.ConversionException Exception Description: The object [%2012-04-06 16:19:49.179%], of class [class java.lang.String], from mapping [org.eclipse.persistence.mappings.DirectToFieldMapping[date-->APIGPS.PUBLIC.COORDONNEES.DATE]] with descriptor [RelationalDescriptor(javaapplication21.Coordonnees --> [DatabaseTable(APIGPS.PUBLIC.COORDONNEES)])], could not be converted to [class java.sql.Timestamp]. at org.eclipse.persistence.exceptions.ConversionException.incorrectTimestampFormat(ConversionException.java:119) at org.eclipse.persistence.internal.helper.Helper.timestampFromString(Helper.java:1888) at org.eclipse.persistence.internal.helper.ConversionManager.convertObjectToTimestamp(ConversionManager.java:726) at org.eclipse.persistence.internal.helper.ConversionManager.convertObject(ConversionManager.java:107) ``` the error is from this line: ``` Query qr= em.createQuery("SELECT c FROM Coordonnees c WHERE c.date > '"+nd+"'") ``` Any helps ?