我在JPA實體類中遇到問題。這個實體工作完美,因爲它應該,但今天 我添加了另一個字段(一個簡單的字符串,數據庫中的varchar(255)NOT NULL)。當我試圖堅持一個新的實體,我得到一個當持久化實體時,JPA忽略字段
java.sql.SQLException: Field 'companyLogoUrl' doesn't have a default value
嗯,這是真的。該列沒有默認值。但在我的代碼中,我爲它設置了值。當我看看生成的插入語句時,該字段不存在。
INSERT INTO COMPANY (ACCOUNTNUMBER, ACCOUNTOWNER, BANK, BANKCODE, CHANGEDAT,
COMPANYNAME, CREATEDAT, addressId)
變量的名稱與列名相匹配,因此沒有可能導致錯誤的註釋。它被視爲就像其他領域/專欄工作正常。
在此先感謝您的幫助!
編輯:
下面是類(一個常規級):
@Entity
class Company extends KupiumEntity
{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
final int companyId
String companyName
String bank
String bankCode
String accountNumber
String accountOwner
String companyLogoUrl
@ManyToOne(cascade=CascadeType.PERSIST)
@JoinColumn(name="addressId")
Address address = new Address()
@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name="companyId")
List<Invoice> invoices = new ArrayList<Invoice>()
@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name="companyId")
List<Kupon> kupons = new ArrayList<Kupon>()
@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name="mandatorId")
List<Mandator> mandators = new ArrayList<Mandator>()
@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name="companyAppId")
List<CompanyApp> companyApps = new ArrayList<CompanyApp>()
}
編輯2: 很抱歉的混亂。表中的字段和列名爲'companyLogoUrl'
請發佈您的實體類。 – 2012-04-19 20:07:50
我們需要看你的Java代碼/映射。現有和新字段之間必須有*一些*區別,比如缺少註釋,getter/setter,不正確的修飾符... – 2012-04-19 20:07:57
看起來這個類看起來不太符合您生成的SQL ... CHANGEDAT? CREATEDAT?你確定一切都在這裏的同一頁嗎? – 2012-04-19 20:14:07