Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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
使用micronaut data hibernate jpa库连接到jpa时出错_Jpa_Microservices_Micronaut_Google Cloud Spanner_Micronaut Data - Fatal编程技术网

使用micronaut data hibernate jpa库连接到jpa时出错

使用micronaut data hibernate jpa库连接到jpa时出错,jpa,microservices,micronaut,google-cloud-spanner,micronaut-data,Jpa,Microservices,Micronaut,Google Cloud Spanner,Micronaut Data,我想为micronaut使用JPA。为此,我使用了io.micronaut.data:micronaut数据休眠jpa:1.0.0.M1库。每当我运行应用程序并点击端点以获取数据时,都会出现以下错误: { message: "Internal Server Error: No backing RepositoryOperations configured for repository. Check your configuration and try again" } 我试图查找错误

我想为micronaut使用JPA。为此,我使用了
io.micronaut.data:micronaut数据休眠jpa:1.0.0.M1
库。每当我运行应用程序并点击端点以获取数据时,都会出现以下错误:

{
    message: "Internal Server Error: No backing RepositoryOperations configured for repository. Check your configuration and try again"
} 
我试图查找错误,但找不到。在这里附上我的文件。请帮忙

格雷德尔先生

plugins {
    id "net.ltgt.apt-eclipse" version "0.21"
    id "com.github.johnrengelman.shadow" version "5.0.0"
    id "application"
}



version "0.1"
group "micronaut.test"

repositories {
    mavenCentral()
    maven { url "https://jcenter.bintray.com" }
}

configurations {
    // for dependencies that are needed for development only
    developmentOnly 
}

dependencies {
    annotationProcessor platform("io.micronaut:micronaut-bom:$micronautVersion")
    annotationProcessor "io.micronaut:micronaut-inject-java"
    annotationProcessor "io.micronaut:micronaut-validation"
    annotationProcessor "org.projectlombok:lombok:1.16.20"
    annotationProcessor 'io.micronaut.data:micronaut-data-processor:1.0.0.M1'

    implementation platform("io.micronaut:micronaut-bom:$micronautVersion")
    compile 'io.micronaut.data:micronaut-data-hibernate-jpa:1.0.0.M1'
    implementation "io.micronaut:micronaut-inject"
    implementation "io.micronaut:micronaut-validation"
    implementation "io.micronaut:micronaut-runtime"
    implementation "io.micronaut:micronaut-http-server-netty"
    implementation "io.micronaut:micronaut-http-client"
    implementation 'nl.topicus:spanner-jdbc:1.1.5'



    runtimeOnly "ch.qos.logback:logback-classic:1.2.3"
    testAnnotationProcessor platform("io.micronaut:micronaut-bom:$micronautVersion")
    testAnnotationProcessor "io.micronaut:micronaut-inject-java"
    testImplementation "org.junit.jupiter:junit-jupiter-api"
    testCompile "org.junit.jupiter:junit-jupiter-engine:5.1.0"
    testImplementation "io.micronaut.test:micronaut-test-junit5"
    testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine"
}

test.classpath += configurations.developmentOnly

mainClassName = "micronaut.test.Application"
// use JUnit 5 platform
test {
    useJUnitPlatform()
}
tasks.withType(JavaCompile){
    options.encoding = "UTF-8"
    options.compilerArgs.add('-parameters')
}

shadowJar {
    mergeServiceFiles()
}

run.classpath += configurations.developmentOnly
run.jvmArgs('-noverify', '-XX:TieredStopAtLevel=1', '-Dcom.sun.management.jmxremote')

存储库:

package micronaut.test.repo;

import io.micronaut.data.annotation.Repository;
import io.micronaut.data.repository.CrudRepository;
import micronaut.test.entity.Partner;

@Repository
public interface PartnerRepository extends CrudRepository<Partner,Integer> {
}


Micronaut目前只支持现成的Tomcat JDBC、Apache DBCP2和Hikari数据源提供程序(请参阅)

您可以将这一行添加到build.gradle中,它将Tomcat JDBC数据源提供程序实现添加到您的项目中:

runtime "io.micronaut.configuration:micronaut-jdbc-tomcat"
也可以选择其他实现,如Apache DBCP2:

runtime "io.micronaut.configuration:micronaut-jdbc-dbcp"
或Hikari:

runtime "io.micronaut.configuration:micronaut-jdbc-hikari"

对于
nl.topicus:Spaner jdbc
数据源提供程序,您必须为Micronaut实现自己的
DatasourceFactory
DatasourceConfiguration
,因为目前还没有

您可以在
io.micronaut.configuration:micronaut jdbc tomcat
中激发自己的灵感。资料来源如下:

例如,
DatasourceFactory
可以如下所示:

@Factory
public class DatasourceFactory implements AutoCloseable {
    private static final Logger LOG = LoggerFactory.getLogger(DatasourceFactory.class);
    private List<nl.topicus.jdbc.CloudSpannerDataSource> dataSources = new ArrayList<>(2);

    private final DataSourceResolver dataSourceResolver;

    /**
     * Default constructor.
     * @param dataSourceResolver The data source resolver
     */
    public DatasourceFactory(@Nullable DataSourceResolver dataSourceResolver) {
        this.dataSourceResolver = dataSourceResolver == null ? DataSourceResolver.DEFAULT : dataSourceResolver;
    }

    /**
     * @param datasourceConfiguration A {@link DatasourceConfiguration}
     * @return An Apache Tomcat {@link DataSource}
     */
    @Context
    @EachBean(DatasourceConfiguration.class)
    public DataSource dataSource(DatasourceConfiguration datasourceConfiguration) {
        nl.topicus.jdbc.CloudSpannerDataSource ds = new nl.topicus.jdbc.CloudSpannerDataSource();
        ds.setJdbcUrl(datasourceConfiguration.getJdbcUrl());
        ...
        dataSources.add(ds);
        return ds;
    }

    @Override
    @PreDestroy
    public void close() {
        for (nl.topicus.jdbc.CloudSpannerDataSource dataSource : dataSources) {
            try {
                dataSource.close();
            } catch (Exception e) {
                if (LOG.isWarnEnabled()) {
                    LOG.warn("Error closing data source [" + dataSource + "]: " + e.getMessage(), e);
                }
            }
        }
    }
}

第一行添加JDBC驱动程序,第二行添加数据源提供程序,该提供程序将使用
扳手JDBC
JDBC驱动程序。

众所周知,Google Cloud扳手在Hibernate ORM中使用的是另一种方言,而不是其他数据库。我认为这种方言很新。请查看此存储库。也许它会对你有用,不是解决你当前的问题所必需的,而是给你一些其他的观点

我已经有了这个:
implementation'nl.topicus:panner jdbc:1.1.5'
,它是云计算的第三方jdbc驱动程序,我用其他信息更新了答案。很快,您就需要以Micronaut的方式实现数据源提供程序。例如,您可以将
nl.topicus:Spaner jdbc:1.1.5
jdbc驱动程序与Hikari一起使用,或者为Micronaut实现我们自己的
DatasourceFactory
,Micronaut将直接从
nl.topicus:Spaner jdbc:1.1.5库使用
CloudSpanerDatasource
,如果您使用的是mysql,请在mavenHey的gradle中包含mysql连接器依赖项。谢谢你的帮助。似乎方言仍在发展中。我找不到要使用的方言版本,这会导致编译错误。你知道我是否能找到方言版本吗?我已经在上面的帖子中发布了这个存储库链接:。据我所知,到目前为止,这是为Cloud Paner开发的唯一产品。
runtime "io.micronaut.configuration:micronaut-jdbc-dbcp"
runtime "io.micronaut.configuration:micronaut-jdbc-hikari"
@Factory
public class DatasourceFactory implements AutoCloseable {
    private static final Logger LOG = LoggerFactory.getLogger(DatasourceFactory.class);
    private List<nl.topicus.jdbc.CloudSpannerDataSource> dataSources = new ArrayList<>(2);

    private final DataSourceResolver dataSourceResolver;

    /**
     * Default constructor.
     * @param dataSourceResolver The data source resolver
     */
    public DatasourceFactory(@Nullable DataSourceResolver dataSourceResolver) {
        this.dataSourceResolver = dataSourceResolver == null ? DataSourceResolver.DEFAULT : dataSourceResolver;
    }

    /**
     * @param datasourceConfiguration A {@link DatasourceConfiguration}
     * @return An Apache Tomcat {@link DataSource}
     */
    @Context
    @EachBean(DatasourceConfiguration.class)
    public DataSource dataSource(DatasourceConfiguration datasourceConfiguration) {
        nl.topicus.jdbc.CloudSpannerDataSource ds = new nl.topicus.jdbc.CloudSpannerDataSource();
        ds.setJdbcUrl(datasourceConfiguration.getJdbcUrl());
        ...
        dataSources.add(ds);
        return ds;
    }

    @Override
    @PreDestroy
    public void close() {
        for (nl.topicus.jdbc.CloudSpannerDataSource dataSource : dataSources) {
            try {
                dataSource.close();
            } catch (Exception e) {
                if (LOG.isWarnEnabled()) {
                    LOG.warn("Error closing data source [" + dataSource + "]: " + e.getMessage(), e);
                }
            }
        }
    }
}
runtime 'nl.topicus:spanner-jdbc:1.1.5'
runtime "io.micronaut.configuration:micronaut-jdbc-hikari"