Невозможно сделать это с простым JPA.
Сначала все выглядит так, как будто это возможно с Hibernate.
Hibernate разбивает определение имен столбцов на двапроцесс
определяет «логическое» имя.По умолчанию это то, что вы указываете в аннотации @Column
.
преобразует это в «физическое» имя.Фактическое имя столбца таблицы базы данных.
Так что, похоже, то, что вы пытаетесь сделать, должно быть сделано на втором шаге, PhysicalNamingStrategy
.Проблема, однако, в том, что на втором этапе нет никакой информации, откуда поступают эти данные, поэтому нет простого способа определить, присутствует ли @SpecialColumn
.
Но я думаю, что можно настроитьпервый шаг с использованием пользовательского ImplicitNamingStrategy
для кодирования этой информации в логическом имени, например, с использованием суффикса.К сожалению, это не дает вам легкого доступа к Field
или Method
, где вы можете найти свою аннотацию.Кажется, только AttributePath
доступны, и я не уверен, достаточно ли это для вашей цели.Но я думаю, что это твой единственный шанс.