Hibernate, sélectionnez par id ou colonne unique

Je suis de l'utilisation d'hibernate pour Java, et je veux être en mesure de sélectionner des utilisateurs par l'id ou le nom de la base de données.

Bonne chose à propos de Hibernate est qu'il met en cache le résultat par id, mais il me semble être incapable de le faire, il le cache par le nom.

static Session openSession = Factory.openSession();

public static User GetUser(int Id) {
    return (User) openSession.get(User.class, new Integer(Id));
}

public static User GetUser( String Name ){
   return (User) openSession.createCriteria( User.class ).
           add( Restrictions.eq("username", Name) ).
           uniqueResult();

}

Si j'utilise GetUser(1) de nombreuses fois, hibernate va seulement montrer qu'il a exécuté la première fois.

Mais chaque fois que j'utilise GetUser("user1"), hibernate montre qu'il est en cours d'exécution d'une requête à la base de données.

Quelle serait la meilleure façon d'avoir de la chaîne d'identificateur d'être mis en cache aussi?

OriginalL'auteur Nican | 2010-06-17