Domanda

Ho una tabella con gli utenti e stanno cercando di ottenere una lista con le persone che hanno compleanno oggi così l'applicazione può inviare una e-mail.

L'utente viene definito come

@Entity
public class User {

    @Size(max = 30)
    @NotNull
    private String name;

    [...]
    @Temporal(TemporalType.DATE)
    @DateTimeFormat(style = "S-")
    protected Date birthday;
}

e ho un metodo che restituisce la gente che nascono oggi in questo modo

@SuppressWarnings("unchecked")
public static List<User> findUsersWithBirthday() {

 List<User> users = 
  entityManager().createQuery("select u from User u where u.birthday = :date")
    .setParameter("date", new Date(), TemporalType.DATE)
    .getResultList();
  return users;
}

Questo va bene e tutto per trovare le persone che nascono oggi, tuttavia tha non è poi così utile, così ho lottato per un modo per trovare tutti gli utenti che sono nati oggi, indipendenti dell'anno.

Utilizzando MySQL c'è funzioni che posso usare come

select month(curdate()) as month, dayofmonth(curdate()) as day

Comunque ho lottato per trovare un APP equivalente a quello.

Sto usando primavera 3.0.1 e Hibernate 3.3.2

È stato utile?

Soluzione

Non so come fare a JPQL ma HQL ha funzioni day() e month() così da poter eseguire:

from User u 
where day(u.birthday) = day(CURRENT_DATE) 
and month(u.birthday) = month(CURRENT_DATE) 

Se si utilizza HQL non è un'opzione, vorrei andare per una query nativo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top