Java >> Tutorial de Java >  >> Tag >> class

¿El tipo de datos utilizado en la clase de entidad JPA para definir una columna afecta la creación de una consulta en DAO?

En la clase de entidad Java, definí una consulta con nombre y tipos de datos para las columnas. Ejecuté la consulta en una clase DAO pero obtuve el error:java.lang.IllegalArgumentException: Type specified for TypedQuery [TestEntity] is incompatible with query return type [class java.util.Date] . No he usado una clase java.util.Date para definir la columna mydate, sino que usé java.sql.Timestamp, por lo que no está claro por qué el error se refiere a java.util.Date. Parece que hice algo mal, pero no está claro qué es.

@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;

En clase DAO

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();
            });
        }

Respuesta

¿Podría intentarlo con el siguiente código? Funcionará.

   @Column(name = "mydate")
    private Date mydate;

El tipo de devolución de consulta debe ser compatible con el objeto de entidad en el que desea convertirlo. Actualiza tu código

TypedQuery<Date>date= entityManager.createNamedQuery("findByTestId", Date.class);

Y el tipo de retorno de este método debería ser como List<Date> .Esto te ayudará.


Etiqueta Java