我正在使用hibernate註釋,我想將類(表)名稱更改爲「t_xx」。 但我不知道使用哪個(classToTableName & tableName & collectionTableName)。Hibernate NamingStrategy中classToTableName&tableName&collectionTableName之間的區別?
1
A
回答
2
您必須通過擴展DefaultNamingStrategy類來創建自定義命名策略。
下面是這些方法的解釋:
classToTableName(java.lang.String)
:當您使用申報和@Entity
沒有任何`@表類(NAME =「...」),則此方法將被調用從您的班級名稱中獲取數據庫表的名稱。collectionTableName(...)
:當需要連接表時,這個方法將被hibernate調用。tableName(java.lang.String)
:當你聲明一個實體以及@Table(name =「table_name」)時,hibernate通過傳遞name屬性的值給這個方法來調用這個方法。
如果您還沒有宣佈任何的命名策略,則Hibernate使用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)
,如果你想要在@Table
註釋中更改name
的屬性值。
@Table(name =「t_xx」)註釋您的類定義應該工作。 – 2014-09-22 06:43:28
我有幾張桌子,我不想一個一個改變他們。 – 2014-09-22 07:03:25