我有一个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;
}
这给出了一个nullpointer-exception。我的猜测是,我的查询错了。任何人都可以帮我解决这个问题吗?
答案 0 :(得分:0)
显然,MySQL服务器配置为阻止所有远程连接。它现在有效(使用vels4j提供的JPA查询,select r FROM User r WHERE r.EMAIL = :email
)
答案 1 :(得分: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();
希望它有所帮助!