Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 创建名为';用户存储库';:FactoryBean在创建对象时引发异常_Java_Spring_Spring Boot_Spring Security_Jwt - Fatal编程技术网

Java 创建名为';用户存储库';:FactoryBean在创建对象时引发异常

Java 创建名为';用户存储库';:FactoryBean在创建对象时引发异常,java,spring,spring-boot,spring-security,jwt,Java,Spring,Spring Boot,Spring Security,Jwt,我有一只虫子,我不知道为什么?我使用SpringBootSpringSecurity+JWT编写了一个登录。但我有一个奇怪的存储库bug 我已经试着这样做了好几个小时了,但是我已经没有力气了。我不知道这有什么关系,但我使用PostgreSQL作为基础 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userRepository': FactoryBean threw e

我有一只虫子,我不知道为什么?我使用SpringBootSpringSecurity+JWT编写了一个登录。但我有一个奇怪的存储库bug

我已经试着这样做了好几个小时了,但是我已经没有力气了。我不知道这有什么关系,但我使用PostgreSQL作为基础

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userRepository': FactoryBean threw exception on object creation; nested exception is java.lang.IllegalArgumentException: Failed to create query for method public abstract java.util.Optional com.tiscode.xxxxx_api.repository.UserRepository.findByName(java.lang.String)! No property name found for type User!
at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:176) ~[spring-beans-5.2.10.RELEASE.jar:5.2.10.RELEASE]
at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.getObjectFromFactoryBean(FactoryBeanRegistrySupport.java:101) ~[spring-beans-5.2.10.RELEASE.jar:5.2.10.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.getObjectForBeanInstance(AbstractBeanFactory.java:1828) ~[spring-beans-5.2.10.RELEASE.jar:5.2.10.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.getObjectForBeanInstance(AbstractAutowireCapableBeanFactory.java:1265) ~[spring-beans-5.2.10.RELEASE.jar:5.2.10.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261) ~[spring-beans-5.2.10.RELEASE.jar:5.2.10.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) ~[spring-beans-5.2.10.RELEASE.jar:5.2.10.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:624) ~[spring-beans-5.2.10.RELEASE.jar:5.2.10.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:612) ~[spring-beans-5.2.10.RELEASE.jar:5.2.10.RELEASE]
at org.springframework.data.repository.config.DeferredRepositoryInitializationListener.onApplicationEvent(DeferredRepositoryInitializationListener.java:51) ~[spring-data-commons-2.3.5.RELEASE.jar:2.3.5.RELEASE]
at org.springframework.data.repository.config.DeferredRepositoryInitializationListener.onApplicationEvent(DeferredRepositoryInitializationListener.java:36) ~[spring-data-commons-2.3.5.RELEASE.jar:2.3.5.RELEASE]
at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:172) ~[spring-context-5.2.10.RELEASE.jar:5.2.10.RELEASE]
at 
存储库接口

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

    Optional<User> findByName(String user);
和我的实体用户类

@Entity
@Table(name = "Users")
public class User {

    @Id
    @GeneratedValue
    private Long id;
    private String email;
    private String userName;
    private String password;
    @ManyToMany(fetch = FetchType.LAZY)
    @JoinTable( name = "user_roles",
            joinColumns = @JoinColumn(name = "user_id"),
            inverseJoinColumns = @JoinColumn(name = "role_id"))
    private Set<UserRole> userRoles = new HashSet<>();

    public User(String username, String email, String password) {
        this.userName = username;
        this.email = email;
        this.password = password;
    }

    public User() {
    }

....
@实体
@表(name=“Users”)
公共类用户{
@身份证
@生成值
私人长id;
私人字符串电子邮件;
私有字符串用户名;
私有字符串密码;
@ManyToMany(fetch=FetchType.LAZY)
@JoinTable(name=“用户角色”,
joinColumns=@JoinColumn(name=“user\u id”),
inverseJoinColumns=@JoinColumn(name=“role\u id”))
private Set userRoles=new HashSet();
公共用户(字符串用户名、字符串电子邮件、字符串密码){
this.userName=用户名;
this.email=电子邮件;
this.password=密码;
}
公共用户(){
}
....

用户对象上的属性称为
用户名
,而不是
名称

这就是为什么Spring抱怨“找不到用户类型的属性名!”

请尝试以下操作:

public interface UserRepository extends JpaRepository<User, Long> {
    Optional<User> findByUserName(String user);
}
public interface UserRepository扩展了JpaRepository{
可选findByUserName(字符串用户);
}

首先请重命名方法和参数。应为:

Optional<User> findByUserName(String userName);
可选findByUserName(字符串用户名);

请删除“@Repository”注释

类路径中是否有用户实体?能否显示您的用户实体?似乎您没有名为“name”的字段。36ve@JeannotMn我刚刚添加了用户实体您将列命名为“name”而不是“userName”
Optional<User> findByUserName(String userName);