In java entity class, I defined a named query and data types for columns. I executed the query in a DAO class but got the error: java.lang.IllegalArgumentException: Type specified for TypedQuery [TestEntity] is incompatible with query return type [class java.util.Date]. I have not used a java.util.Date class for defining the mydate column, instead I used java.sql.Timestamp, so it’s unclear why the error is referring to java.util.Date. It looks like I have done something wrong, but it’s unclear what it is.
@Entity
@Table(name = "SAMPLE", schema = "MYSCHEMA")
@NamedQuery(name = "findByTestId", query = "select u.mydate from TestEntity u where u.my_id = :testId")
public class TestEntity {
@Id
@Column(name = "MY_ID")
private String my_id;
@Column(name = "mydate")
private java.sql.Timestamp mydate;
In DAO class
public classTest Dao extends BaseDao
public List<TestEntity> findByTestId(String id) {
return execute("punit", entityManager -> {
TypedQuery<TestEntity> query = entityManager.createNamedQuery("findByTestId", TestEntity.class);
query.setParameter("testId", id);
return query.getResultList();
});
}
Advertisement
Answer
Could you please try with below code, it will work.
@Column(name = "mydate")
private Date mydate;
The query return type need be compatible with the entity object in which you want to cast it. Update your code
TypedQuery<Date>date= entityManager.createNamedQuery("findByTestId", Date.class);
And return type of this method should be like List<Date>.
This will help you.