classToTableName和;表名及;Hibernate NamingStrategy中的collectionTableName?

classToTableName和;表名及;Hibernate NamingStrategy中的collectionTableName?,hibernate,Hibernate,我正在使用hibernate注释,我想将类(表)名称更改为“t_xx”。 但我不知道使用哪一种(classToTableName&tableName&collectionTableName)。您必须通过扩展类来创建自定义命名策略 以下是对这些方法的说明: classToTableName(java.lang.String):当您使用@Entity声明了一个类,并且没有任何`@表(name=“…”)时,将调用此方法从您的类名中获取DB表的名称 collectionTableName(…):当需要

我正在使用hibernate注释,我想将类(表)名称更改为“t_xx”。
但我不知道使用哪一种(classToTableName&tableName&collectionTableName)。

您必须通过扩展类来创建自定义命名策略

以下是对这些方法的说明:

  • classToTableName(java.lang.String)
    :当您使用
    @Entity
    声明了一个类,并且没有任何`@表(name=“…”)时,将调用此方法从您的类名中获取DB表的名称

  • collectionTableName(…)
    :当需要联接表时,hibernate将调用此方法

  • tableName(java.lang.String)
    :当您与`@Table(name=“Table\u name”)一起声明了一个实体时,hibernate通过将name属性的值传递给该方法来调用该方法

如果您没有声明任何命名策略,那么hibernate将使用

因此,请扩展该类并如下重写该方法:

public String  classToTableName(String className) {
   return "t_"+super.classToTableName(className);
}


public String collectionTableName(String ownerEntity, String ownerEntityTable, String associatedEntity, String associatedEntityTable,String propertyName) {
   return "t_"+super.collectionTableName(ownerEntity,ownerEntityTable,associatedEntity,associatedEntityTable,propertyName);
}

如果需要,如果要更改
@Table
注释中
name
的属性值,可以覆盖
tableName(String)

@Table(name=“t_xx”)注释在类定义上应该可以工作。我有几个表,不想逐个更改它们。