2014-09-22 51 views

回答

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的屬性值。