【问题标题】:Did not find named query未找到命名查询
【发布时间】:2016-12-21 23:02:21
【问题描述】:

我有这个实体:

@Entity
public class User {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id", unique = true, nullable = false)
private Long id;

private String firstname;
private String lastname;
private Date birthdate;
private int phonenumber;
private int cin;
private String address;
private String password;
private String email;
//Getters & Setters ..
}

还有这个 DAO 类:

@Repository
public interface UserDAO extends JpaRepository<User, Long> {

List<User> findAllUsersByFirstnameOrderByFirstnameDesc(String firstName);
List<User> findAllUsersByLastnameOrderByLastnameDesc(String Lastname);
List<User> findAllUsersByFirstnameAndLastnameOrderByFirstname(String firstAndLastname);
List<User> findAllUsersByFirstnameOrLastnameContaining(String nameContent);
List<User> findAllUsersByPhonenumber(int phoneNumber);
List<User> findAllUsersByEmailContaining(String email);
User findUserByCin(int cin);
}

当我运行它时,我得到了这个错误:

原因:java.util.NoSuchElementException: null 在 java.util.ArrayList$Itr.next(Unknown Source)

调试 org.springframework.data.jpa.repository.query.NamedQuery - 未找到命名查询 User.findAllUsersByEmailContaining

调试 org.springframework.data.jpa.repository.query.NamedQuery - 未找到命名查询 User.findAllUsersByFirstnameOrLastnameContaining

谢谢。

【问题讨论】:

  • 不确定出了什么问题,但我不知道这个查询是如何工作的, List findAllUsersByFirstnameAndLastnameOrderByFirstname(String firstAndLastname); --- 当它需要 2 个参数并且您传递一个参数时。
  • 这就是问题所在,它不起作用,我不知道为什么。你能详细说明一下吗。 @Arun
  • 对于我在评论中的查询,您需要为 findAllUsersByFirstn‌​ameAndLastnameOrderBy‌​Firstname(String firstName, String LastName); 等方法传递 2 个参数;
  • 也 findAllUsersByEmailContaining(String email);如果它不尝试 @Query 并自己编写查询,这应该可以工作。请参阅docs.spring.io/spring-data/jpa/docs/current/reference/html中的 5.3.4 部分
  • 我也认为这同样适用,它需要 2 个参数 ---- List findAllUsersByFirstnameOrLastnameContaining(String nameContent);

标签: spring hibernate repository entity spring-data-jpa


【解决方案1】:

感谢@Arun,我能够解决以下问题:

改变这个:

List<User> findAllUsersByFirstnameAndLastnameOrderByFirstname(String firstAndLastname);

收件人:

List<User> findAllUsersByFirstnameAndLastnameOrderByFirstname(String firstname, String lastname);

这:

List<User> findAllUsersByFirstnameOrLastnameContaining(String nameContent);

List<User> findAllUsersByFirstnameOrLastnameLike(String nameContent);

还有这个

List<User> findAllUsersByFirstnameOrLastnameContaining(String nameContent);

List<User> findAllUsersByFirstnameOrLastnameContaining(String firstname, String lastname);

有关更多信息,您可以查看此link

【讨论】:

    猜你喜欢
    • 2013-12-28
    • 1970-01-01
    • 2018-02-07
    • 2011-09-11
    • 2011-08-06
    • 1970-01-01
    相关资源
    最近更新 更多