【问题标题】:javax.persistence.EntityNotFoundException' exception. Cannot evaluate models.Anagrafica_$$_jvst834_0.toString()javax.persistence.EntityNotFoundException' 异常。无法评估模型。Anagrafica_$$_jvst834_0.toString()
【发布时间】:2018-05-07 16:12:46
【问题描述】:

我正在使用 ninja 框架,它利用 JPA 访问数据库。

我有这个问题:enter image description here

我的代码:

public class UtenteDao extends AbstractDao {


@Inject
Provider<EntityManager> entityManagerProvider;


@UnitOfWork
public boolean utenteValido(String user, String password) {

    if (user != null && password != null ) {

        EntityManager entityManager = entityManagerProvider.get();

        TypedQuery<Utente> q = entityManager
                .createQuery("SELECT x FROM Utente x WHERE x.user = :user AND x.password = :password AND x.attivo ='true'", Utente.class)
                .setParameter("user",user)
                .setParameter("password",password);



        Utente utente = getSingleResult(q);

        if (utente != null) {

            if (utente.password.equals(password)) {

                return true;
            }
        }
    }
    return false;
  }
}

我不知道如何解决这个问题。

希望你能帮助我,提前谢谢你。

【问题讨论】:

    标签: java hibernate jpa ninjaframework


    【解决方案1】:

    getSingleResult() 会抛出 EntityNotFoundException,因为它没有找到具有所提供参数的实体。

    您在调试器中看到的问题是内部类没有 toString 方法。但这没关系。问题是它没有找到实体。

    如果您的查询结果可能为空,您必须捕获 EntityNotFoundException 或调用 getResultList() 并检查它是否为空。

    【讨论】:

    • 我通过执行结果列表来做到这一点 public T getSingleResult(TypedQuery query) { query.setMaxResults(1); List lista = query.getResultList(); if(lista == null || lista.isEmpty()) { return null; } 返回 lista.get(0); } 事实上,如果你可以通过扩展我创建的 abstractDao 类看到
    • Anagrafica 是什么?从stacktrace我看到execption是在这个类的toString方法中抛出的
    猜你喜欢
    • 2023-04-08
    • 2020-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-30
    相关资源
    最近更新 更多