Спящие сущности имеют поля, названные в случае верблюда, но когда DTO, созданный из этой сущности, возвращается из REST API, мы преобразуем имя поля в случай змеи.
Существует универсальный c способ конвертировать каждое поле DTO в случай змеи с помощью конфигурации Джексона, например, так:
spring.jackson.property-naming-strategy: SNAKE_CASE
Проблема теперь в этом, например, с подкачкой и сортировкой Spring, если мы хотим отсортировать по параметру, нам нужно передать параметр как случай верблюда, а не случай змеи.
Пример:
Сущность выглядит так:
@Data
@Entity
@Table
public class Entity {
@Id
@Column(name = "id", updatable = false, nullable = false)
@GeneratedValue(generator = "uuid")
@Access(AccessType.PROPERTY)
private UUID id;
@Column(name = "some_text")
private String someText;
}
DTO выглядит так:
@Data
public class EntityDTO implements Serializable {
private UUID id;
private String someText;
}
Вывод JSON следующий:
{
"id": "80fb034a-36c1-4534-a39f-b344fa815a2d",
"some_text": "random text"
}
Теперь, если мы хотим вызвать конечную точку с параметром сортировки, например:
/entities?sort=some_text&some_text.dir=desc
, это не будет работать, потому что поле в сущности - это на самом деле someText, а не some_text, что весьма запутанно, потому что вывод - в случае змеи, а не верблюда.
Итак, общий вопрос: как с этим бороться? Есть ли умный способ сделать это? Некоторая конфигурация Джексона или конфигурация обработчика аргументов? Или мне нужно вручную преобразовать каждый отдельный случай змеи в случай верблюда?
Заранее спасибо, ребята.