【问题标题】:java.lang.IllegalArgumentException: Not a managed type: class while initiating repository beanjava.lang.IllegalArgumentException:不是托管类型:启动存储库 bean 时的类
【发布时间】:2019-10-14 19:18:01
【问题描述】:

您好,我正在尝试在 Spring Boot 应用程序启动时加载一些数据库值。我有自动接线服务,在服务中我有自动接线的道。下面是错误。

org.springframework.beans.factory.UnsatisfiedDependencyException:创建名为“validationExpressionService”的bean时出错:通过字段“validationExpressionDao”表达的依赖关系不满足;嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建名为“IValidationExpressionDao”的 bean 时出错:调用 init 方法失败;嵌套异常是 java.lang.IllegalArgumentException: Not a managed type: class com.ril.nfg.dao.bean.ValidationExpression

我添加了@EnitityScan @EnableJPARepository 仅供参考,字符串中的主键,希望没问题。

实体

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 * The Class ValidationExpression.
 */
package com.ril.nfg.dao.bean;

@Entity
@Table(name = "VALIDATION_EXPRESSION")
public class ValidationExpression implements Serializable {


    private static final long serialVersionUID = 9096950800262493651L;

    private String validationId;
    private String expression;
    private String createdBy;
    private Date createdOn;
    private String description;
    private String responseCode;

     @Id
     @Column(name = "VALIDATION_ID", nullable = false, length = 100)
    public String getValidationId() {
        return validationId;
    }

    public void setValidationId(String validationId) {
        this.validationId = validationId;
    }

     @Column(name = "EXPRESSION", nullable = false, length = 200)
    public String getExpression() {
        return expression;
    }

    public void setExpression(String expression) {
        this.expression = expression;
    }
//remaining getters and setters
}

存储库

package com.ril.nfg.dao.repos;

import com.ril.nfg.dao.bean.ValidationExpression;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

/**
 * The Interface IValidationExpressionDao.
 */
@Repository
public interface IValidationExpressionDao extends JpaRepository<ValidationExpression, String> {
}

服务

import java.util.List;

@Service
public class ValidationExpressionService {

    @Autowired
    IValidationExpressionDao validationExpressionDao;

    public List<ValidationExpression> getAll() {
        return validationExpressionDao.findAll();
    }
}

带有@Autwired 服务的类

public class CacheModuleParam implements ApplicationContextAware{

private static List<ValidationExpression> validationExpressionList = null;

@Autowired
    ValidationExpressionService validationExpressionService;

@Override
    public void setApplicationContext(final ApplicationContext appContext) throws BeansException {
validationExpressionList = validationExpressionService.getAll();
}
}

应用类

@ComponentScan(basePackages = {"com.ril.nfg"})
@EnableWebMvc
@EnableAutoConfiguration
@SpringBootApplication//(exclude={DataSourceAutoConfiguration.class})
@EnableJpaRepositories(basePackages="com.ril.nfg.dao.repos",entityManagerFactoryRef="oracleEntityManagerFactory")
//@EntityScan(basePackages = "com.ril.nfg.dao.bean")
public class NFGApplication {

    public static void main(String[] args) {
        SpringApplication.run(NFGApplication.class, args);
    }

}

互联网上的所有解决方案都集中在@EntityScan。请帮助我理解这段代码有什么问题。提前致谢

【问题讨论】:

    标签: spring-boot spring-data-jpa


    【解决方案1】:

    为什么你有所有这些配置?只需将我们的应用程序放在包树中所有其他类的上一层,您就可以使用这样的类:

    @SpringBootApplication
    public class NFGApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(NFGApplication.class, args);
        }
    
    }
    

    包:

    com.ril.nfg <- here you put NFGApplication
    

    以及 com.ril.nfg 子包中的所有其他类

    然后一切都会好起来的!

    【讨论】:

    • 我将 NFGApplication 类移至 com.ril.nfg 并删除了所有配置。错误仍然存​​在。但是实现配置不是必需的。谢谢
    猜你喜欢
    • 1970-01-01
    • 2017-06-21
    • 1970-01-01
    • 2019-04-28
    • 2019-12-30
    • 2019-11-01
    • 2021-02-11
    • 2019-04-16
    • 1970-01-01
    相关资源
    最近更新 更多