Olá pessoal!!
Estou quebrando a cabeça para resolver um problema. Tenho que, a partir de uma data selecionar a agenda do médico.
Utilizo JPA, hibernate…
Estou pensando em transformar no BD:
@Column(nullable=false)
@Temporal(javax.persistence.TemporalType.DATE)
private Date dataMarcada;
Para String… isso até que ponto está errado se eu fizer o tratamento de erro, e ter certeza de que antes de inserir no BD o dado, este será um valor válido?
Pessoalmente não sou a favor de mudar o tipo de dado assim desta forma radical (Date - String).
Eu costumo a usar Calendar ao invés de Date, pois o date tem vários metodos deprected. Dai optei por usar o Calendar.
Para seu caso talvez funcione. Mas precisa fazer algumas alterações em códigos, não em base…
Deve ser porque estou fazendo a query a partir da Session que tenho na thread do server.
E você esta pegando do EntityManager.
Mas não era para ser diferente.
Outra coisa que peguei o createQuery e não o createNamedQuery.
Tenta fazer assim…
EntityManager dao = Conexao.getEM();
Query query = dao.createQuery("select agenda from Agenda agenda where agenda.medico.id = :codigomedico and agenda.datamarcada = datamarcada order by agenda.hora");
query.setParameter("codigomedico", a.getMedico().getCodigoPessoa());
query.setDate("datamarcada", a.getDataMarcada());