鉴于我有一个用@Column注释的字段,JPA将根据文件名在数据库的列上分配dafult名称。 EG:
@Column
private String someString;
在这种情况下,数据库中的列将称为SOMESTRING。
我希望在同一字段上存在另一个注释的情况下,导出数据库列名称的规则也有所不同。例如“ _” + FIELDNAME。
EG:
@Column
@SpecialColumn
private String someString;
在这种情况下,列名称应为:_SOMESTRING
最佳做法是什么? 谢谢!
答案 0 :(得分:2)
纯JPA无法做到这一点。
起初,看起来似乎可以使用Hibernate。
Hibernate将确定列名分为两个步骤。
它确定“逻辑”名称。默认情况是您在@Column
批注中提供的内容。
正在将其转换为“物理”名称。实际的数据库表列名称。
因此,听起来您应该尝试在第二步PhysicalNamingStrategy
中完成。
但问题是,第二步没有任何数据来自何处,因此没有简单的方法来确定是否存在@SpecialColumn
。
但是我想人们可以使用自定义ImplicitNamingStrategy
来调整第一步,以逻辑名称(例如,使用后缀。
不幸的是,这两种方法都无法让您轻松访问Field
或Method
所在的注解。
它似乎只能使AttributePath
可用,我不确定这是否足以满足您的目的。
但是我认为这是您唯一的机会。