JPA在Oracle中自動建立表失敗
阿新 • • 發佈:2019-02-07
使用jpa可以幫助我們在資料庫中自動建立表。
①建立實體類:
@Entity @Table(name = Schema.TABLE_NAME) public class BNoLine extends BBufferLine { //省略其他欄位 private BigDecimal originalMemberGrossInterestRate; @Column(precision = 19, scale = 6) public BigDecimal getOriginalMemberGrossInterestRate() { return originalMemberGrossInterestRate; } public void setOriginalMemberGrossInterestRate(BigDecimal originalMemberGrossInterestRate) { this.originalMemberGrossInterestRate = originalMemberGrossInterestRate; } }
②配置持久化類:persistence.xml中
一般出現數據庫中表不能被建立的原因,檢查實體類中有關注解,欄位名稱;檢查是否配置了持久化類。
今天使用因為沒有建立表報以下錯誤:
Caused by: org.hibernate.QueryException: could not resolve property: code of: learnext.entity.BNoLine [FROM learnext.entity.BNoLine AS s WHERE s.buffer = ? ORDER BY s.code ASC]
經過檢查發現表沒有被建立的原因是:Oracle資料庫對列名的長度有限制為30個字元,而我的欄位名為originalMemberGrossInterestRate超出了列名長度限制。導致資料庫表無法被建立。
解決方法:修改Oracle列長度(沒嘗試);或者修改欄位長度(採用)。