關於GenericJDBCException的問題

2022-09-17 12:09:10 字數 4378 閱讀 1417

在spring和hibernate整合的初步階段,還沒有編輯hibernate.cfg.xml這個檔案,只有乙個beans.xml檔案。此時遇到了乙個bug。

exception in thread "main" org.hibernate.exception.genericjdbcexception: could not insert: [com.test.model.user]

at org.hibernate.exception.sqlstateconverter.handlednonspecificexception(sqlstateconverter.j**a:126)

at org.hibernate.exception.sqlstateconverter.convert(sqlstateconverter.j**a:114)

at org.hibernate.exception.jdbcexceptionhelper.convert(jdbcexceptionhelper.j**a:66)

at org.hibernate.id.insert.abstractreturningdelegate.performinsert(abstractreturningdelegate.j**a:64)

at org.hibernate.persister.entity.abstractentitypersister.insert(abstractentitypersister.j**a:2176)

at org.hibernate.persister.entity.abstractentitypersister.insert(abstractentitypersister.j**a:2656)

at org.hibernate.action.entityidentityinsertaction.execute(entityidentityinsertaction.j**a:71)

at org.hibernate.engine.actionqueue.execute(actionqueue.j**a:279)

at org.hibernate.event.def.abstracts**eeventlistener.performs**eorreplicate(abstracts**eeventlistener.j**a:321)

at org.hibernate.event.def.abstracts**eeventlistener.performs**e(abstracts**eeventlistener.j**a:204)

at org.hibernate.event.def.abstracts**eeventlistener.s**ewithgeneratedid(abstracts**eeventlistener.j**a:130)

at org.hibernate.event.def.defaults**eorupdateeventlistener.s**ewithgeneratedorrequestedid(defaults**eorupdateeventlistener.j**a:210)

at org.hibernate.event.def.defaults**eeventlistener.s**ewithgeneratedorrequestedid(defaults**eeventlistener.j**a:56)

at org.hibernate.event.def.defaults**eorupdateeventlistener.entityistransient(defaults**eorupdateeventlistener.j**a:195)

at org.hibernate.event.def.defaults**eeventlistener.performs**eorupdate(defaults**eeventlistener.j**a:50)

at org.hibernate.event.def.defaults**eorupdateeventlistener.ons**eorupdate(defaults**eorupdateeventlistener.j**a:93)

at org.hibernate.impl.sessionimpl.fires**e(sessionimpl.j**a:563)

at org.hibernate.impl.sessionimpl.s**e(sessionimpl.j**a:551)

at org.hibernate.impl.sessionimpl.s**e(sessionimpl.j**a:547)

at com.test.dao.impl.userdaoimpl.s**e(userdaoimpl.j**a:33)

at com.test.service.userservice.add(userservice.j**a:30)

at com.test.action.useraction.main(useraction.j**a:23)

caused by: j**a.sql.sqlexception: field 'id' doesn't h**e a default value

at com.mysql.jdbc.sqlerror.createsqlexception(sqlerror.j**a:1055)

at com.mysql.jdbc.sqlerror.createsqlexception(sqlerror.j**a:956)

at com.mysql.jdbc.mysqlio.checkerrorpacket(mysqlio.j**a:3515)

at com.mysql.jdbc.mysqlio.checkerrorpacket(mysqlio.j**a:3447)

at com.mysql.jdbc.mysqlio.sendcommand(mysqlio.j**a:1951)

at com.mysql.jdbc.mysqlio.sqlquerydirect(mysqlio.j**a:2101)

at com.mysql.jdbc.connectionimpl.execsql(connectionimpl.j**a:2554)

at com.mysql.jdbc.preparedstatement.executeinternal(preparedstatement.j**a:1761)

at com.mysql.jdbc.preparedstatement.executeupdate(preparedstatement.j**a:2046)

at com.mysql.jdbc.preparedstatement.executeupdate(preparedstatement.j**a:1964)

at com.mysql.jdbc.preparedstatement.executeupdate(preparedstatement.j**a:1949)

at org.apache.commons.dbcp.delegatingpreparedstatement.executeupdate(delegatingpreparedstatement.j**a:102)

at org.hibernate.id.identitygenerator$getgeneratedkeysdelegate.executeandextract(identitygenerator.j**a:94)

at org.hibernate.id.insert.abstractreturningdelegate.performinsert(abstractreturningdelegate.j**a:57)

... 18 more

主要看第一行,是乙個genericjdbcexception型別錯誤,把錯誤在網上找了一下,大多數回答都是基於有了hibernate.cfg.xml這個檔案的情況下回答的,如:

原因:當使用bookid當主鍵的時候 使用hibernate 並且將其實體對映 設為自動增長時會報此異常,因為uuid為字元型的無法使用數字型的自動增長。

解決方法:只需要將在實體中刪除掉 問題即可解決。

分析了一下,是主鍵遞增方式的問題。我的user.j**a中有這麼乙個註解@generatedvalue(具體這個註解什麼意思,可以在網上查查,推薦個鏈結

user.j**a**如下(這裡是改之前的,多了乙個@generatedvalue)

import

j**ax.persistence.entity;

import

j**ax.persistence.generatedvalue;

import

j**ax.persistence.id;

@entity

public

class

user

public

void setid(int

id)

public

string getname()

public

void

setname(string name)

}

只需要把@generatedvalue去掉就行了。

關於程式關於世界

首先,在學了1年多的軟體設計的基礎上,問下自己 程式是什麼?業務需求是什麼?程式有什麼用?什麼是演算法?什麼是資料庫?或許每個人的理解不同,會給出不同的答案。那麼自己的理解 程式是乙個讓計算機工作的流程,在程式寫好之後,計算機就會按照,程式設計師定義好流程在執行。其實很多時候,乙個程式的好壞,在於乙...

關於血液關於軟體

1 自然沉降法 將血袋垂直吊掛於4 2 冰箱內,使紅細胞自然下沉1 3d,或將血袋呈70 80 角立於冰箱,需用時,用一次性分漿器分出血漿,制得濃縮紅細胞。2 洗滌法 一般用生理鹽水反覆洗滌3 6次。經洗滌的紅細胞,除白細胞和血小板減少外,血漿蛋白也極少,紅細胞中殘存的血漿蛋白含量約為原總蛋白的1 ...

關於冷漠,關於愛情

我不知道為什麼今天又莫名其妙開始思考愛情這件事,隨之就解決了我一直無法面對冷漠這件事 被冷漠是我始終無法消化的一件事,每當遇見冷漠時,我總會覺得就像一團火把自己燒得面目全非,但對方卻毫無傷害。但我突然懂了,遇到冷漠時,體面的離開即可 在乎你的人一定會在你離開後,找到你跟你解釋為什麼 連解釋都來不及,...