![](/img/trans.png)
[英]spring.jpa.hibernate.ddl-auto=update mariadb can not auto create Database indexes or Foreign key or column
[英]Hibernate : How to change the auto generated foreign key column name from lowercase to uppercase
您可以使用自己的列名而不是自動生成的列名,嘗試在您的 flagCategory getter 上添加此注釋:
@JoinColumn(name = "FLAGCATEGORY_FLAGCATEGORYID")
Hibernate
使用PhysicalNamingStrategy
合約將邏輯名稱解析為物理名稱。 默認實現是簡單地使用邏輯名稱作為物理名稱。
您可以定義自定義實現:
public class FooPhysicalNamingStrategy implements PhysicalNamingStrategy {
// Changing the column names to upper case
@Override
public Identifier toPhysicalColumnName(Identifier identifier,
JdbcEnvironment jdbcEnvironment) {
return jdbcEnvironment
.getIdentifierHelper()
.toIdentifier(identifier.getText().toUpperCase(), identifier.isQuoted());
}
// Keeping as it is
@Override
public Identifier toPhysicalSchemaName(Identifier identifier,
JdbcEnvironment jdbcEnvironment) {
return identifier;
}
// Other overridden methods
}
並將hibernate.physical_naming_strategy
設置設置為 class 的FQN或引用 class。
例如,將以下屬性添加到 persistence.xml 中的persistence.xml
persistence-unit
:
<property name="hibernate.physical_naming_strategy" value="foo.bar.FooPhysicalNamingStrategy"/>
JPA 自省:
JPA
沒有定義邏輯名稱和物理名稱之間的分隔。 遵循JPA
規范,邏輯名稱是物理名稱。 如果JPA
提供程序可移植性很重要,應用程序不應該指定PhysicalNamingStrategy
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.