Copied a straightforward entity class from my coleague. Using Eclipse Kepler (Reporting) and stored it in ObjectDB 2.5.3_02. After creating an ObjectDB BIRT DataSource and a DataSet, entered a simple JPQL query to select the fields. Entity looks like this:
package entity; import java.util.Date; import java.util.List; import javax.persistence.*; /** * Entity class for a patient */ @Entity public class Patient { @Id @GeneratedValue(strategy=GenerationType.IDENTITY) private long id; private String name; private boolean privacy; @Column(name="birthdate") @Temporal(value = TemporalType.DATE) private Date birthdate; /** * Constructs a new instance */ public Patient() { // empty } /** * Returns the id of this {@link Patient} * @return the id */ public long getId() { return id; } /** * Sets the id of this {@link Patient} * @param id the id to set */ public void setId(long id) { this.id = id; } /** * Returns the name of this {@link Patient} * @return the name */ public String getName() { return name; } /** * Sets the name of this {@link Patient} * @param name the name to set */ public void setName(String name) { this.name = name; } /** * Returns the birthdate of this {@link Patient} * @return the birthdate */ public Date getBirthdate() { return birthdate; } /** * Sets the birthdate of this {@link Patient} * @param birthdate the birthdate to set */ public void setBirthdate(Date birthdate) { this.birthdate = birthdate; } /** * Returns the privacy indication of this {@link Patient} * @return the privacy */ public boolean isPrivacy() { return privacy; } /** * Sets the privacy indication of this {@link Patient} * @param privacy the privacy to set */ public void setPrivacy(boolean privacy) { this.privacy = privacy; } }
Exception on previewing query results:
org.eclipse.birt.data.engine.odaconsumer.OdaDataException: Cannot get the timestamp value column: 3. org.eclipse.datatools.connectivity.oda.OdaException ; java.lang.ClassCastException: java.util.Date cannot be cast to java.sql.Timestamp at org.eclipse.birt.data.engine.odaconsumer.ExceptionHandler.newException(ExceptionHandler.java:55) at org.eclipse.birt.data.engine.odaconsumer.ExceptionHandler.throwException(ExceptionHandler.java:108) at org.eclipse.birt.data.engine.odaconsumer.ExceptionHandler.throwException(ExceptionHandler.java:96) at org.eclipse.birt.data.engine.odaconsumer.ResultSet.getTimestamp(ResultSet.java:350) at org.eclipse.birt.data.engine.odaconsumer.ResultSet.fetch(ResultSet.java:189) at org.eclipse.birt.data.engine.executor.cache.OdiAdapter.fetch(OdiAdapter.java:214) at org.eclipse.birt.data.engine.executor.cache.RowResultSet.fetch(RowResultSet.java:145) at org.eclipse.birt.data.engine.executor.cache.RowResultSet.doNext(RowResultSet.java:118) at org.eclipse.birt.data.engine.executor.cache.RowResultSet.next(RowResultSet.java:96) at org.eclipse.birt.data.engine.executor.transform.SimpleResultSet$RowResultSetWithResultSetScope.fetch(SimpleResultSet.java:1013) at org.eclipse.birt.data.engine.executor.cache.RowResultSet.doNext(RowResultSet.java:118) at org.eclipse.birt.data.engine.executor.cache.RowResultSet.next(RowResultSet.java:96) at org.eclipse.birt.data.engine.executor.transform.SimpleResultSet.prepareFirstRow(SimpleResultSet.java:319) at org.eclipse.birt.data.engine.executor.transform.SimpleResultSet.getResultSetIterator(SimpleResultSet.java:338) at org.eclipse.birt.data.engine.executor.DataSourceQuery.execute(DataSourceQuery.java:1057) at org.eclipse.birt.data.engine.impl.PreparedOdaDSQuery$OdaDSQueryExecutor.executeOdiQuery(PreparedOdaDSQuery.java:503) at org.eclipse.birt.data.engine.impl.QueryExecutor.execute(QueryExecutor.java:1208) at org.eclipse.birt.data.engine.impl.ServiceForQueryResults.executeQuery(ServiceForQueryResults.java:233) at org.eclipse.birt.data.engine.impl.QueryResults.getResultIterator(QueryResults.java:178) at org.eclipse.birt.report.engine.api.impl.ExtractionResults.nextResultIterator(ExtractionResults.java:157) at org.eclipse.birt.report.designer.data.ui.dataset.DataSetPreviewer.preview(DataSetPreviewer.java:69) at org.eclipse.birt.report.designer.data.ui.dataset.ResultSetPreviewPage$5.run(ResultSetPreviewPage.java:366) at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121) Caused by: org.eclipse.datatools.connectivity.oda.OdaException ; java.lang.ClassCastException: java.util.Date cannot be cast to java.sql.Timestamp at com.objectdb.oda.ResultSet.getTimestamp(ResultSet.java:351) at org.eclipse.datatools.connectivity.oda.consumer.helper.OdaResultSet.getTimestamp(OdaResultSet.java:658) at org.eclipse.birt.data.engine.odaconsumer.ResultSet.getTimestamp(ResultSet.java:346) ... 19 more Caused by: java.lang.ClassCastException: java.util.Date cannot be cast to java.sql.Timestamp at com.objectdb.oda.ResultSet.getTimestamp(ResultSet.java:348) ... 21 more
I'd rather not use java.sql.Timestamp in my entity classes. Is this a bug in ObjectDB or BIRT or is there an error in my entity class?