@Column(name="DateOfBirth")
private Date dateOfBirth;
我特別需要上面的代碼來創建一個名爲「DateOfBirth」的列,而不是Hibernate給我一個名爲date_of_birth的列。我該如何改變這一點?有沒有web.xml屬性?我遇到了DefaultNamingStrategy和ImprovedNamingStrategy,但不知道如何指定一個或另一個。hibernate列名問題
@Column(name="DateOfBirth")
private Date dateOfBirth;
我特別需要上面的代碼來創建一個名爲「DateOfBirth」的列,而不是Hibernate給我一個名爲date_of_birth的列。我該如何改變這一點?有沒有web.xml屬性?我遇到了DefaultNamingStrategy和ImprovedNamingStrategy,但不知道如何指定一個或另一個。hibernate列名問題
以下是一種可能的解決方法:如果您將其命名爲dateofbirth
DB中的列將被命名爲類似名稱,但屬性名稱應該相同。
Hibernate採用駝峯格式來創建/讀取數據庫列。
我以前有過這個問題。我使用了列名「employeename」,「employeerole」,「departmentlocation」中沒有空格的傳統列。我討厭它,因爲我所有的bean屬性都必須沒有駱駝大小寫。
用「_」分隔的數據庫列將用於正確地使用camelCase,正如您剛纔所看到的那樣。
我不是100%確定,但是你不需要註釋get方法而不是私有變量嗎?
我不這麼認爲?至少,我可以在實例變量級別指定類似長度的東西,並且它們將相應地更改列。 – lucas 2008-12-17 21:38:49
您可以註釋其中任何一個,但必須始終對其進行註釋。如果你將它們混合並註釋了一些標題和一些getters,它會找到一個並忽略另一個。 – 2015-12-05 11:04:51
將@Column批註上,吸氣:
@Column(name="DateOfBirth")
public Date getDateOfBirth() {
...
}
這對我有用 – chaostheory 2012-06-19 01:49:50
您可以標註字段或getter方法,它不會有所作爲。你可以發佈完整的hibernate.cfg.xml或persistence.xml文件嗎?
建議的解決方法是使用@Column(name =「dateofbirth」),它適用於我的目的。
你是說你唯一的改變是在大寫? – 2008-12-17 22:24:15
僅供參考:插入下劃線的原因可能是因爲您使用的是ImprovedNamingStrategy。它設置在您的Configuration對象上。例如,請參閱here ...
如果您不想使用下劃線,則可以不設置命名策略,或將其設置爲您之前發現的DefaultNamingStrategy。
ImprovedNamingStrategy有方法addUnderscores(),它是由表名()和列名()稱爲 你可以實現自己的命名策略類,並覆蓋這些按您選擇
public class MyOwnNamingStrategy extends ImprovedNamingStrategy {
@Override
public String tableName(String tableName) {
//return addUnderscores(columnName); // skip this
return columnName; // if you want column name variable name same
//return changeAsYouWant(columnName); // as name sames
}
}
嘗試把這個在
application.properties
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
下面添加屬性春季開機的情況下。
spring.jpa.hibernate.naming.implicit策略= org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl spring.jpa.hibernate.naming.physical策略= org.hibernate.boot.model.naming .PhysicalNamingStrategyStandardImpl
可能的工作量。如果你將它命名爲dateofbirth,那麼DB中的列將被命名爲這樣,但屬性名稱應該是相同的。 – OscarRyz 2008-12-17 21:54:34
良好的通話 - 這工作。謝謝! – lucas 2008-12-17 22:13:00
讓我把它當作答案:) – OscarRyz 2008-12-17 22:24:47