AttributeConverter 无法与 postgres jsonb 配合使用,它会报告错误

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

AttributeConverter 不能与 postgres jsonb 配合使用,它会报错: org.postgresql.util.PSQLException:错误:列“cloud_reminder_parameters”的类型为 jsonb,但表达式的类型为字符变化

我的代码如下:

@Entity
@Table(name = "scan_reminder_config")
public class ScanReminderConfig {

    @Convert(converter = ReminderParameters.ReminderParametersConverter.class)
    @Column(name = "cloud_reminder_parameters", columnDefinition = "jsonb")
    private ReminderParameters cloudReminderParameters;

    public static class ReminderParameters {
        private String timezone;

        @Converter(autoApply = true)
        public static class ReminderParametersConverter implements AttributeConverter<ReminderParameters, String> {

            private final ObjectMapper objectMapper = new ObjectMapper();

            @Override
            public String convertToDatabaseColumn(final ReminderParameters reminderParameters) {
                try {
                    return objectMapper.writeValueAsString(reminderParameters);
                } catch (JsonProcessingException e) {
                    return null;
                }
            }

            @Override
            public ReminderParameters convertToEntityAttribute(final String dataValue) {
                try {
                    return objectMapper.readValue(dataValue, ReminderParameters.class);
                } catch (JsonProcessingException e) {
                    return null;
                }
            }
        }
    }
}

帮助,帮助,帮助,帮助

postgresql hibernate jpa jsonb
1个回答
0
投票

是的,这是行不通的。我可以让它与 Postgres 一起使用的唯一方法是将 Hypersistence 与 @TypeDefs 和 @Type 用于 jsonb 字段。

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