使用micronaut data hibernate jpa库连接到jpa时出错
我想为micronaut使用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" } 我试图查找错误
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"