由於某種原因,當試圖使用findByEmail
方法初始化存儲庫時,我得到BeanCreationException
。不知道原因是什麼,實體中的字段與查詢中的參數相對應,並且在調度程序servlet中掃描包。春季 - 無法在CrudRepository中創建自定義查詢
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
@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
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);
}
}
錯誤的完整的跟蹤:
Could not create query metamodel for method public abstract java.util.List wymysl.repositories.PersonRepository.findByEmail(java.lang.String)!
添加堆棧跟蹤請。 – Jens
@Jens是忘了它。它現在被添加 –
該列表不能擁有抽象對象的下級框架需要澄清列表類型。 –