Вам нужно сделать age
обычным постоянным свойством.
Этого можно добиться, создав представление базы данных из 2 столбцов со столбцами идентификатора и возраста, с столбцом возраста, основанным на JSON_EXTRACT, как и в вашем вопросе. .
Затем вы можете использовать @SecondaryTable
на вашей сущности, чтобы она могла быть сопоставлена как с ее таблицей, так и с только что созданным представлением, объединенным в столбцах id.
Вы можететогда сделайте возраст постоянным свойством. Затем вы можете отсортировать фильтр по возрасту, как и для любого другого постоянного свойства.
@Entity
@Table("...")
@SecondaryTable("my_new_view")
public class MyEntity{
//existing mappings
@Column(name ="age" table="my_new_view", insertable="false", updateable="false")
private Integer age; //ensure to use wrapper type here to avoid issues
}