[英]Spring - can't create custom query in CrudRepository
For some reason i get BeanCreationException
when trying to initialize repository with findByEmail
method. 出于某种原因,我得到
BeanCreationException
试图初始化存储库时findByEmail
方法。 Don't know what's the cause, field in entity corresponds with arguments in query and packages are scanned in dispatcher servlet. 不知道是什么原因,entity中的字段与查询中的参数相对应,并且在调度程序servlet中扫描了程序包。
PersonRepository.java PersonRepository.java
import java.util.List;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
import wymysl.model.Person;
@Repository
public interface PersonRepository extends CrudRepository<Person, Long> {
public List<Person> findByEmail(String Email);
}
Person.java 人.java
@Entity
@Table(name = "Persons")
public class Person {
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE)
protected Integer id_per;
@NotNull
@Size(min=2, max=30)
protected String Name;
@NotNull
@Size(min=2, max=30)
protected String Surname;
@NotNull
@Email
protected String Email;
protected String Contact_email;
protected String Gender;
protected String City;
protected String Country;
protected String Additional;
@NotNull
@Size(min=6, max=15)
protected String Password;
@Transient
@NotNull
@Size(min=6, max=15)
protected String checkPassword;
public Person(){
}
public Person(String name, String surname, String email, String password) {
this.Name = name;
this.Surname = surname;
this.Email = email;
this.Password = password;
}
public Integer getId_per() {
return id_per;
}
public void setId_per(Integer id_per) {
this.id_per = id_per;
}
public String getName() {
return Name;
}
public void setName(String name) {
this.Name = name;
}
public String getSurname() {
return Surname;
}
public void setSurname(String surname) {
this.Surname = surname;
}
public String getEmail() {
return Email;
}
public void setEmail(String email) {
this.Email = email;
}
public String getContact_email() {
return Contact_email;
}
public void setContact_email(String contact_email) {
this.Contact_email = contact_email;
}
public String getGender() {
return Gender;
}
public void setGender(String gender) {
this.Gender = gender;
}
public String getCity() {
return City;
}
public void setCity(String city) {
this.City = city;
}
public String getCountry() {
return Country;
}
public void setCountry(String country) {
this.Country = country;
}
public String getAdditional() {
return Additional;
}
public void setAdditional(String additional) {
this.Additional = additional;
}
public String getPassword() {
return Password;
}
public void setPassword(String password) {
this.Password = password;
}
public String getCheckPassword() {
return checkPassword;
}
public void setCheckPassword(String checkPassword) {
this.checkPassword = checkPassword;
}
}
PersonValidator.java PersonValidator.java
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.Errors;
import org.springframework.validation.Validator;
import wymysl.model.Person;
import wymysl.repositories.PersonRepository;
public class PersonValidator implements Validator {
@Autowired
PersonRepository repo;
public boolean supports(Class<?> classz) {
// TODO Auto-generated method stub
return Person.class.equals(classz);
}
public void validate(Object target, Errors errors) {
Person person = (Person) target;
if(!(person.getPassword().equals(person.getCheckPassword()))){
errors.rejectValue("Password", "password.nonequal");
}
List<Person> emailCheck = repo.findByEmail(person.getEmail());
if(!emailCheck.isEmpty()) {
errors.rejectValue("Email", "email.exist");
}
repo.save(person);
}
}
Full trace of error : 完整的错误痕迹:
Could not create query metamodel for method public abstract java.util.List wymysl.repositories.PersonRepository.findByEmail(java.lang.String)!
I think you left the query annotation off of your repository interface method:: 我认为您将查询批注从存储库接口方法中删除了:
@Query
public List<Person> findByEmail(String Email);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.