Я безуспешно пытаюсь использовать EnumCodec из последней версии r2dbc-postgresql (0.8.4), и мне было интересно, можете ли вы мне помочь.
Я также использую spring-data-r2dbc версии 1.1.1.
Я взял точный пример из GitHub и создал тип перечисления «my_enum» в моем Postgres и таблицу «sample_table», которая содержит «name» (текст) и «value» (my_enum).
Затем я сделал как в примере:
SQL:
CREATE TYPE my_enum AS ENUM ('FIRST', 'SECOND');
Модель Java:
enum MyEnumType {
FIRST, SECOND;
}
Регистрация кодека:
PostgresqlConnectionConfiguration.builder()
.codecRegistrar(EnumCodec.builder().withEnum("my_enum", MyEnumType.class).build());
Я использую DatabaseClient для связи с БД. Пробовал вставлять двумя способами:
databaseClient.insert().into(SampleTable.class)
.using(sampleTable).fetch().rowsUpdated();
or:
databaseClient.insert().into("sample_table")
.value("name", sampleTable.getName())
.value("value", sampleTable.getValue())
.then();
где SampleTable:
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Table("sample_table")
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
public class SampleTable implements Serializable {
private String name;
@Column("value")
@JsonProperty("value")
private MyEnumType value;
}
Но я получаю ту же ошибку, используя оба:
значение столбца имеет тип my_enum, а выражение - переменный символ
Не могли бы вы помочь мне понять, что я сделал не так, или посоветовать мне какой-нибудь рабочий пример? Я ценю вашу помощь!