无法在PostgreSQL和Hibernate中运行GraalVM本机映像



我正在尝试使用Spring和buildpacks构建我的服务作为GraalVM本机映像。我的应用程序是Spring Data REST应用程序与PostgreSQL数据库对话。代码中没有任何异常。图像构建没有问题,并在Docker容器外运行,但当我试图运行生成的GraalVM容器时,我得到一个错误:

Description:
Native reflection configuration for org.hibernate.dialect.PostgreSQLDialect is missing.

例外是

Caused by: java.lang.ClassNotFoundException: org.hibernate.dialect.PostgreSQLDialect
at com.oracle.svm.core.hub.ClassForNameSupport.forName(ClassForNameSupport.java:71) ~[na:na]
at java.lang.Class.forName(DynamicHub.java:1319) ~[.....:na]
at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:130) ~[na:na]

我application.yml:

---
spring:
config:
activate:
on_profile: local
datasource:
url: jdbc:postgresql://localhost:5432/test
username: postgres
password: 1234
driver-class-name: org.postgresql.Driver
jpa:
hibernate:
use-new-id-generator-mappings: false
ddl-auto: none
show-sql: true
properties:
hibernate:
dialect: org.hibernate.dialect.PostgreSQLDialect
javax:
persistence:
validation:
mode: none

我知道Spring原生图像支持仍然有问题,我只是想知道问题是否在我这边。

现在有一种方法可以解决当前Spring Native版本的postgres,使用Spring Native版本提示。

本地提示

事实证明,使用注释实现这一点很简单。

package com.margic.serverless.data;
import org.hibernate.dialect.PostgreSQL95Dialect;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.nativex.hint.TypeHint;
@SpringBootApplication
@TypeHint(types = PostgreSQL95Dialect.class, typeNames = "org.hibernate.dialect.PostgreSQLDialect")
public class DataApplication {
public static void main(String[] args) {
SpringApplication.run(DataApplication.class, args);
}
}

原因是Spring本机支持问题:以下依赖项不知道与Spring本机一起工作:…,Rest Repositories

最新更新