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;
}
}
}
}
}
帮助,帮助,帮助,帮助
是的,这是行不通的。我可以让它与 Postgres 一起使用的唯一方法是将 Hypersistence 与 @TypeDefs 和 @Type 用于 jsonb 字段。