我正在使用hibernate注释,我想将类(表)名称更改为“t_xx”。 但我不知道要使用它们中的哪一个(classToTableName& tableName& collectionTableName)。
答案 0 :(得分:2)
您必须通过扩展DefaultNamingStrategy类来创建自定义命名策略。
以下是对这些方法的解释:
classToTableName(java.lang.String)
:当您使用@Entity
声明一个类并且没有任何`@Table(name =“...”)时,将调用此方法以获取名称您的班级名称中的数据库表。
collectionTableName(...)
:当需要连接表时,hibernate将调用此方法。
tableName(java.lang.String)
:当您使用`@Table(name =“table_name”)声明一个实体时,hibernate通过将name属性的值传递给此方法来调用此方法。
如果您尚未声明任何命名策略,则休眠使用DefaultNamingStrategy
所以扩展这个类并覆盖这样的方法:
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);
}
如果您需要更改tableName(String)
注释中name
的属性值,可以覆盖@Table
。