1. 程式人生 > >JPA在Oracle中自動建立表失敗

JPA在Oracle中自動建立表失敗

使用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列長度(沒嘗試);或者修改欄位長度(採用)。