我有一个 PostgreSQL 数据库,其中的列可以包含空值。如果我使用 quarkus dev 模式或 jvm,查询将返回(正确)null 值。但是,如果我使用 GraalVM 使用本机配置文件进行构建,它将返回 0(表示 Integer)和 0.0(表示 Float)(而不是 null)。
我在多阶段 docker 构建期间使用 quarkus-resteasy-jsonb 扩展和以下图像: 来自 quay.io/quarkus/ubi-quarkus-mandrel-builder-image:22.3-java17 AS 构建 ...
已经测试过的内容:
可能与此相关:Quarkus 数字类型(整数、浮点数)返回 0 而不是 null
这是我的实体类的开头:
@Entity
@Table(name = DBUtils.MY_TABLE_NAME, schema = DBUtils.SCHEMA_NAME)
@Getter
@Setter
public class MyClass extends PanacheEntityBase {
private static Logger technicalLogger = Logger.getLogger(LoggerNames.TECHNICAL.getName());
@Id
@GeneratedValue(generator = "myclassSequenceGenerator")
@SequenceGenerator(name = "myclassSequenceGenerator", sequenceName = "myclass_id_seq", allocationSize = 1)
@Column(name = "myclass_id", nullable = false)
public int myclassId;
@Column(name = "myclass_name", length = 50)
public String myclassName;
@Column(name = "street_length_m", length = 5)
public Integer lengthInMeters; // <= gives 0 if null in DB
@Column(name = "street_length_km", length = 5)
public Float lengthInKilometers; // <= gives 0.0 if null in DB
...
任何帮助将不胜感激。非常感谢!
使用相同的配置,Jackson 而不是 Jsonb,使用 GraalVM 和 Java21,不会发生此错误。
如果您使用Active Record策略,则不需要Lombok。
有一个问题已打开 https://github.com/oracle/graal/issues/5672
我会尝试: