Quarkus:枚举中的构造函数不能应用于给定类型

问题描述 投票:0回答:2

我正在开始使用 Quarkus,我正在尝试在我的实体中使用枚举,但我不断收到此错误:

[ERROR] ~/ConnectorFormatEnum.java:[10,12] constructor ConnectorFormatEnum in enum *.ConnectorFormatEnum cannot be applied to given types;
[ERROR]   required: no arguments
[ERROR]   found:    java.lang.String,boolean
[ERROR]   reason: actual and formal argument lists differ in length

这是我的枚举类:

@RequiredArgsConstructor
public enum ConnectorFormatEnum {
SOCKET("SOCKET",true),
CABLE("CABLE",true),
UNKNOWN(null,false);

private final String value;
private final Boolean ocpi;

@JsonValue
public String getValue() {
    return value;
  }
}

这是我想使用枚举的实体:

@Data
@Entity
@Table(schema = "ocpi_locations", name = "connector")
public class ConnectorEntity {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id_connector")
private Long id;

@Column(name = "internal", nullable = false, insertable = true, updatable = false)
private String internal;

@Column(name = "id", length=36)
private String idConnector;


@Enumerated(EnumType.STRING)
@Type(type = "pgsql_enum")
@Column(name = "format")
private ConnectorFormatEnum format = ConnectorFormatEnum.UNKNOWN;

@Column(name = "voltage")
private Integer voltage;

@Column(name = "amperage")
private Integer amperage;

@Column(name = "terms_and_conditions")
private String termsAndConditions;

@CreationTimestamp
@Column(updatable = false)
private Instant createdAt;

@UpdateTimestamp
@Column(name="updated_at", nullable = false, insertable = false )
private Instant lastUpdated;

@UpdateTimestamp
@Column(name="deleted_at", nullable = false, insertable = false )
private Instant deletedAt;

}

我的项目中还有其他枚举,我正在尝试与其他实体一起使用,但我对所有这些实体都遇到相同的错误,我在这里做错了什么吗?

java enums entity quarkus
2个回答
0
投票

可能的解决方案

根据堆栈跟踪,我相信您只缺少枚举中的构造函数:

@RequiredArgsConstructor
public enum ConnectorFormatEnum {
    SOCKET("SOCKET",true),
    CABLE("CABLE",true),
    UNKNOWN(null,false);

    private final String value;
    private final Boolean ocpi;

    // Add this constructor
    private ConnectorFormatEnum(String value, boolean ocpi) {
        this.value = value;
        this.ocpi = ocpi;
    }

    @JsonValue
    public String getValue() {
        return value;
    }
}

0
投票

错误表明,您需要

No Arguments Constructor
,因此在类顶部添加 Lombok 的
@NoArgsConstructor
将解决您的问题。

这里简要介绍了为什么我们首先需要无参数构造函数:https://www.baeldung.com/jpa-no-argument-constructor-entity-class#reasons-for-no-arg-constructor

© www.soinside.com 2019 - 2024. All rights reserved.