-1

我有一个 MySQL 数据库,其中包含一个名为User. 它有两列。一个是命名ID的,另一个是EMAIL。它有更多的列,但这与问题无关。

在我的 DAO 对象中,我想创建一个名为findByEmail. 它目前看起来像这样:

@Override
public User findByEmail(String email) {
    Object obj = em.createQuery("FROM User WHERE EMAIL LIKE :email").setParameter("email", email).getSingleResult();
    User user = (User)obj;
    return user;        
}

这给出了一个空指针异常。我的猜测是,我的查询是错误的。谁能帮我解决这个问题?

4

2 回答 2

0

显然,MySQL 服务器被配置为阻止所有远程连接。它现在可以工作(使用 vels4j 提供的 JPA 查询,select r FROM User r WHERE r.EMAIL = :email

于 2012-11-26T14:53:43.413 回答
0

正如你所说,你可以这样做。但是如果你想遵循更接近的 SQL 方法,你不妨使用

    @Override
public User findByEmail(String email) {
    Object obj = em.createNativeQuery("SELECT * FROM User WHERE EMAIL = " + email).getSingleResult();
    User user = (User)obj;
    return user;        
}

此外,如果您想缩短代码,您可以在执行查询的同一行中声明并强制转换用户,如下所示:

User user = (User) em.createNativeQuery("SELECT * FROM User WHERE EMAIL = " + email).getSingleResult();

希望能帮助到你!

于 2016-12-09T11:23:34.633 回答