【发布时间】: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
-
对于我在评论中的查询,您需要为 findAllUsersByFirstnameAndLastnameOrderByFirstname(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