Estou tentando colocar a seguinte classe genérica para funcionar:
public Object executaNamedQuerySingleResult(String namedquery) {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("System");
EntityManager em = emf.createEntityManager();
Object result = null;
try {
result = em.createNamedQuery(namedquery)
.getSingleResult();
} catch (Exception e) {
e.printStackTrace();
em.getTransaction().rollback();
} finally {
em.close();
}
return (result);
}
Na teoria ela retorna um Objeto para mim, então eu passaria um Cast e teria o objeto na mão.
Então eu a chamo assim:
public boolean ValidaVersao() {
String versaoBd = (String) dao.executaNamedQuerySingleResult("PfUtils.findVersion").toString();
if (versaoBd == versaoatual) {
return true;
} else {
return false;
}
}
Porem quando vou Debugar as variáveis versaoBd e versaoatual são strings com valor 0.1 (vide imagem em anexo), mas o sistema insiste em retornar FALSE.
Mas se eu uso a classe “não genérica” ele funciona.
private String VersaoServidor() {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("System");
EntityManager em = emf.createEntityManager();
Object result = null;
try {
result = em.createNamedQuery("PfUtils.findVersion")
.getSingleResult();
} catch (Exception e) {
e.printStackTrace();
em.getTransaction().rollback();
} finally {
em.close();
}
return (result.toString());
}
Alguém consegue ver onde eu estou errando?