使用JPA存储库时如何解决javax.enterprise.inject.IllegalProductException

时间:2019-10-30 22:48:45

标签: quarkus

在基于quarkus的代码中的CrudRepository上调用findAll方法时,出现异常。

这是我的数据库配置。

quarkus.datasource.url = jdbc:postgresql://localhost:5432/postgres
quarkus.datasource.driver = org.postgresql.Driver
quarkus.datasource.username = ZZZZ
quarkus.datasource.password = XXX

这是存储库代码。

    import org.springframework.data.repository.CrudRepository;

    public interface FruitRepository extends CrudRepository<FruitEntity, Integer> {
    }

这是客户端代码。

    import javax.inject.Inject;
    import javax.ws.rs.GET;
    import javax.ws.rs.Path;
    import javax.ws.rs.Produces;

    @Path("/fruitz")
    public class FruitController {
        @Inject
        FruitRepository fruitRepository;

        @GET
        @Produces("application/json")
        public Iterable<FruitEntity> findAll() {
            return fruitRepository.findAll();
        }
    }

我正在追随异常。

  

原因:javax.enterprise.inject.IllegalProductException:普通范围内的生产者方法可能不会返回null:io.quarkus.agroal.runtime.DataSourceProducer.createDefaultDataSource()           在io.quarkus.agroal.runtime.DataSourceProducer_ProducerMethod_createDefaultDataSource_7c487e3ef869f878aa871e917c94f4d26d5d5c56_Bean.create(DataSourceProducer_ProducerMethod_createDefaultDataSource_7c487e3ef869f878aa871e917c94f4d26d56c)           在io.quarkus.agroal.runtime.DataSourceProducer_ProducerMethod_createDefaultDataSource_7c487e3ef869f878aa871e917c94f4d26d5d5c56_Bean.create(DataSourceProducer_ProducerMethod_createDefaultDataSource_7c487e3ef869f878aa871e917c94f4d26d56244)           在io.quarkus.arc.AbstractSharedContext.createInstanceHandle(AbstractSharedContext.java:69)           在io.quarkus.arc.ComputingCache $ CacheFunction.lambda $ apply $ 0(ComputingCache.java:99)           在io.quarkus.arc.LazyValue.get(LazyValue.java:26)           在io.quarkus.arc.ComputingCache.getValue(ComputingCache.java:41)           在io.quarkus.arc.AbstractSharedContext.get(AbstractSharedContext.java:20)           在io.quarkus.agroal.runtime.DataSourceProducer_ProducerMethod_createDefaultDataSource_7c487e3ef869f878aa871e917c94f4d26d5d5c5_56_ClientProxy.arc $ delegate(DataSourceProducer_ProducerMethod_createDefaultDataSource_7c487e3ef869f878ad56d265470           在io.quarkus.agroal.runtime.DataSourceProducer_ProducerMethod_createDefaultDataSource_7c487e3ef869f878aa871e917c94f4d26d5d5c56_ClientProxy.getConnection(DataSourceProducer_ProducerMethod_createDefaultDataSource_7c487e3ef869f878aa871e917c94f4d

1 个答案:

答案 0 :(得分:0)

您必须使用@Named注释您的界面,以使其可用于注入。另外,请确保已添加quarkus-jdbc-postgresql作为依赖项。