Erro ao consultar uma data no hibernate

1 resposta
MikelR

Pessoal,

Alguem poderia me ajudar, comecei a pouco tempo a estudar hibernate, etc… e estou tentando buscar uma data usando o hibernate escificamente o criteria, porem ao tentar executar o mesmo me dar um erro abaixo.

INFO: HHH10001501: Connection obtained from JdbcConnectionAccess [org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess@f08fdce] for (non-JTA) DDL execution was not in auto-commit mode; the Connection local transaction will be committed and the Connection will be set into auto-commit mode.

Hibernate: select contato0_.id as id1_0_, contato0_.dataCadastro as datacada2_0_, contato0_.formatter as formatte3_0_, contato0_.idade as idade4_0_, contato0_.nome as nome5_0_ from Contato contato0_ where contato0_.dataCadastro=?

java.lang.ClassCastException: class java.lang.String cannot be cast to class java.util.Date (java.lang.String and java.util.Date are in module java.base of loader bootstrap)

at org.hibernate.type.descriptor.java.JdbcTimestampTypeDescriptor.unwrap(JdbcTimestampTypeDescriptor.java:24)

at org.hibernate.type.descriptor.sql.TimestampTypeDescriptor$1.doBind(TimestampTypeDescriptor.java:48)

at org.hibernate.type.descriptor.sql.BasicBinder.bind(BasicBinder.java:73)

at org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:276)

at org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:271)

at org.hibernate.param.NamedParameterSpecification.bind(NamedParameterSpecification.java:53)

at org.hibernate.loader.hql.QueryLoader.bindParameterValues(QueryLoader.java:682)

at org.hibernate.loader.Loader.bindPreparedStatement(Loader.java:2137)

at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:2114)

at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:2046)

at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:2024)

at org.hibernate.loader.Loader.doQuery(Loader.java:955)

at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:356)

at org.hibernate.loader.Loader.doList(Loader.java:2855)

at org.hibernate.loader.Loader.doList(Loader.java:2837)

at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2669)

at org.hibernate.loader.Loader.list(Loader.java:2664)

at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:540)

at org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:400)

at org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:219)

at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1443)

at org.hibernate.query.internal.AbstractProducedQuery.doList(AbstractProducedQuery.java:1649)

at org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1617)

at org.hibernate.query.internal.AbstractProducedQuery.getSingleResult(AbstractProducedQuery.java:1665)

at org.hibernate.query.criteria.internal.compile.CriteriaQueryTypeQueryAdapter.getSingleResult(CriteriaQueryTypeQueryAdapter.java:111)

at br.com.hibernate.dao.ContatoDao.getByDataCadastro(ContatoDao.java:184)

at br.com.hibernate.aplicacao.Main.main(Main.java:50)

Segue o metodo que criei:
public void getByDataCadastro( int dataCadastro) {

try(Session session = Util.getSessionFactory().openSession()){
	CriteriaBuilder criteriaBuilder = session.getCriteriaBuilder();

	CriteriaQuery<Contato> criteriaQuery = criteriaBuilder.createQuery(Contato.class);
	Root<Contato> root = criteriaQuery.from(Contato.class);

	criteriaQuery.select(root);
	criteriaQuery.where(criteriaBuilder.equal(root.get("dataCadastro"), dataCadastro));

	TypedQuery<Contato> typedQuery = session.createQuery(criteriaQuery);
	Contato contato = typedQuery.getSingleResult();
	System.out.println(contato.getNome() + ", " + contato.getIdade() + ", " + contato.getDataCadastro() );
	}catch (Exception e) {
		e.printStackTrace();
	}

1 Resposta

Fefo80

Na linha 184 do seu código…

… você está tentando transformar um objeto String em um obejto Date, sem usar a conversão correta.

Criado 26 de junho de 2021
Ultima resposta 27 de jun. de 2021
Respostas 1
Participantes 2