J'ai une insertOrUpdateméthode qui insère un Entityquand il n'existe pas ou le met à jour s'il existe. Pour activer cela, je dois findByIdAndForeignKey, s'il retourne nullinsérer sinon, mettre à jour. Le problème est de savoir comment vérifier s'il existe? Alors j'ai essayé getSingleResult. Mais cela lève une exception si le
public Profile findByUserNameAndPropertyName(String userName, String propertyName) {
String namedQuery = Profile.class.getSimpleName() + ".findByUserNameAndPropertyName";
Query query = entityManager.createNamedQuery(namedQuery);
query.setParameter("name", userName);
query.setParameter("propName", propertyName);
Object result = query.getSingleResult();
if (result == null) return null;
return (Profile) result;
}
mais getSingleResultjette un Exception.
Merci
getSingleResult()est utilisé dans des situations comme: " Je suis tout à fait sûr que ce disque existe. Tirez-moi si ce n'est pas le cas ". Je ne veux pas testernullchaque fois que j'utilise cette méthode car je suis sûr qu'elle ne la retournera pas. Sinon, cela entraîne beaucoup de programmation passe-partout et défensive. Et si le disque n'existe vraiment pas (contrairement à ce que nous avons supposé), il vaut bien mieux l'avoirNoResultExceptionpar rapport àNullPointerExceptionquelques lignes plus tard. Bien sûr, avoir deux versions degetSingleResult()serait génial, mais si je devais en choisir une ...