EntityManager uniqueResult

krgewb

Top Contributor
Das ist Mein Code:
Java:
public String getValueOfSettingsByVariable(String variable) {
        Query query = entityManager.createQuery("SELECT e.value FROM SettingsEntity e WHERE e.variable = :variable");
        query.setParameter("variable", variable);
        query.setMaxResults(1);
        List<String> list = query.getResultList();
        if (list != null && list.size() > 0) {
            return list.get(0);
        }
        return null;
}
(VARIABLE ist Primärschlüssel)

Ich würde es gerne anders machen. Das wäre mein Ziel (Pseudocode):
Java:
public String getValueOfSettingsByVariable(String variable) {
        Query query = entityManager.createQuery("SELECT e.value FROM SettingsEntity e WHERE e.variable = :variable");
        query.setParameter("variable", variable);
        return query.uniqueResult();
}
 

mihe7

Top Contributor
Es gibt getSingleResult(). In dem Fall muss das Ergebnis aber tatsächlich aus genau einer Zeile (nicht 0, nicht 2, nicht mehr) bestehen, ansonsten fliegt eine Exception.

Sonst sollte möglich sein:
Java:
return query.getResultStream().findFirst().map(String::valueOf).orElse(null);

In Deinem Fall würde ich allerdings gleich eine TypedQuery verwenden:
Java:
public String getValueOfSettingsByVariable(String variable) {
    TypedQuery<String> query = entityManager.createQuery("SELECT e.value FROM SettingsEntity e WHERE e.variable = :variable", String.class);
    query.setParameter("variable", variable);
    return query.getResultStream().findFirst().orElse(null);
}
 

Ähnliche Java Themen


Oben