困擾了自己一天的問題居然這樣簡單
在做自己的認為的項目時,遇到了一個很棘手的問題。hibernate+spring的時候總是報nested exception is org.hibernate.exception.SQLGrammarException: Could not execute JDBC batch update這個錯誤。
查看了很多資料,總是沒有解決,后來想到sql中的關鍵字呢?
一下是我表中的字段,大家看看。
99BUBHX[VD.jpg)
但是查看sql關鍵字:
ADD | EXIT | PRIMARY |
ALL | FETCH | |
ALTER | FILE | PRIVILEGES |
AND | FILLFACTOR | PROC |
ANY | FLOPPY | PROCEDURE |
AS | FOR | PROCESSEXIT |
ASC | FOREIGN | PUBLIC |
AUTHORIZATION | FREETEXT | RAISERROR |
AVG | FREETEXTTABLE | READ |
BACKUP | FROM | READTEXT |
BEGIN | FULL | RECONFIGURE |
BETWEEN | GOTO | REFERENCES |
BREAK | GRANT | REPEATABLE |
BROWSE | GROUP | REPLICATION |
BULK | HAVING | RESTORE |
BY | HOLDLOCK | RESTRICT |
CASCADE | IDENTITY | RETURN |
CASE | IDENTITY_INSERT | REVOKE |
CHECK | IDENTITYCOL | RIGHT |
CHECKPOINT | IF | ROLLBACK |
CLOSE | IN | ROWCOUNT |
CLUSTERED | INDEX | ROWGUIDCOL |
COALESCE | INNER | RULE |
COLUMN | INSERT | SAVE |
COMMIT | INTERSECT | SCHEMA |
COMMITTED | INTO | SELECT |
COMPUTE | IS | SERIALIZABLE |
CONFIRM | ISOLATION | SESSION_USER |
CONSTRAINT | JOIN | SET |
CONTAINS | KEY | SETUSER |
CONTAINSTABLE | KILL | SHUTDOWN |
CONTINUE | LEFT | SOME |
CONTROLROW | LEVEL | STATISTICS |
CONVERT | LIKE | SUM |
COUNT | LINENO | SYSTEM_USER |
CREATE | LOAD | TABLE |
CROSS | MAX | TAPE |
CURRENT | MIN | TEMP |
CURRENT_DATE | MIRROREXIT | TEMPORARY |
CURRENT_TIME | NATIONAL | TEXTSIZE |
CURRENT_TIMESTAMP | NOCHECK | THEN |
CURRENT_USER | NONCLUSTERED | TO |
CURSOR | NOT | TOP |
DATABASE | NULL | TRAN |
DBCC | NULLIF | TRANSACTION |
DEALLOCATE | OF | TRIGGER |
DECLARE | OFF | TRUNCATE |
DEFAULT | OFFSETS | TSEQUAL |
DELETE | ON | UNCOMMITTED |
DENY | ONCE | UNION |
DESC | ONLY | UNIQUE |
DISK | OPEN | UPDATE |
DISTINCT | OPENDATASOURCE | UPDATETEXT |
DISTRIBUTED | OPENQUERY | USE |
DOUBLE | OPENROWSET | USER |
DROP | OPTION | VALUES |
DUMMY | OR | VARYING |
DUMP | ORDER | VIEW |
ELSE | OUTER | WAITFOR |
END | OVER | WHEN |
ERRLVL | PERCENT | WHERE |
ERROREXIT | PERM | WHILE |
ESCAPE | PERMANENT | WITH |
EXCEPT | PIPE | WORK |
EXEC | PLAN | WRITETEXT |
EXECUTE | PRECISION | |
EXISTS | PREPARE |
使用的是mysql數據庫,后來自己修改了describe和`invalidation`后,插入數據成功了。
這是怎么回事呢?
Oracle、IBM Content Manager、Informix 和 SQL Server 字段映射表:引自http://hi.baidu.com/landor2004/blog/item/4a3a4acab515b68ec817686f.html
模板 | java.sql.Types 值 | Java 類型 | IBM DB2 | Oracle | Sybase | SQL | Informix | IBM Content Manager |
x | BIGINT | java.lang.long | BIGINT | NUMBER (38, 0) | BIGINT | BIGINT | INT8 | DK_CM_BIGINT |
BINARY | byte[] | CHAR FOR BIT DATA | RAW | BINARY | IMAGE | BYTE | DK_CM_BLOB | |
x | BIT | java.lang.Boolean | N/A | BIT | BIT | BIT | BIT | DK_CM_SMALLINT |
BLOB | byte[] | BLOB | BLOB | BLOB | BLOB | BLOB | DK_CM_BLOB | |
x | CHAR | java.lang.String | CHAR, GRAPHIC | CHAR | CHAR | CHAR | CHAR | DK_CM_CHAR |
x | CLOB | java.lang.String | CLOB, DBCLOB | CLOB | CLOB | CLOB | CLOB | DK_CM_CLOB |
DATE | java.sql.Date | DATE | DATE | DATE | DATE | DATE | DK_CM_DATE | |
x | DECIMAL | java.math.BigDecimal | DECIMAL | NUMBER | DECIMAL, MONEY, SMALLMONEY | DECIMAL | DECIMAL | DK_CM_DECIMAL |
x | DOUBLE | java.lang.Double | DOUBLE | DOUBLE PRECISION | DOUBLE PRECISION | DOUBLE PRECISION | DOUBLE PRECISION | DK_CM_DOUBLE |
x | FLOAT | java.lang.Double | FLOAT | FLOAT | FLOAT | FLOAT | FLOAT | DK_CM_DOUBLE |
x | INTEGER | java.lang.Integer | INTEGER | INTEGER | INT | INTEGER | INTEGER | DK_CM_INTEGER |
JAVA_OBJECT | java.lang.Object | JAVA_OBJECT | JAVA_OBJECT | JAVA_OBJECT | JAVA_OBJECT | OPAQUE | N/A | |
LONGVARBINARY | byte[] | LONG VARCHAR FOR BIT DATA | LONG RAW | IMAGE | IMAGE | BYTE | DK_CM_BLOB | |
x | LONGVARCHAR | java.lang.String | LONG VARCHAR, LONG VARGRAPHIC | LONG | TEXT | TEXT | TEXT | DK_CM_VARCHAR(3500) |
x | NUMERIC | java.math.BigDecimal | NUMERIC | NUMBER | NUMERIC | NUMERIC | NUMERIC | DK_CM_DECIMAL |
OTHER | java.lang.Object | OTHER | OTHER | OTHER | OTHER | OTHER | N/A | |
x | REAL | java.lang.Float | REAL | REAL | REAL | REAL | REAL | DK_CM_DOUBLE |
x | SMALLINT | java.lang.Integer | SMALLINT | SMALLINT | SMALLINT | SMALLINT | SMALLINT | DK_CM_INTEGER |
TIME | java.sql.Time | TIME | DATE | TIME | TIME | DATETIME HOUR TO SECOND | DK_CM_TIME | |
TIMESTAMP | java.sql.Timestamp | TIMESTAMP | DATE | DATETIME, SMALLDATETIME | DATETIME | DATETIME YEAR TO FRACTION (5) | DK_CM_TIMESTAMP | |
x | TINYINT | java.lang.Bute | SMALLINT |
TINYINT |
TINYINT |
TINYINT | TINYINT | DK_CM_INTEGER |
VARBINARY | byte[] | VARCHAR FOR BIT DATA | RAW | VARBINARY | IMAGE | BYTE | DK_CM_BLOB | |
x | VARCHAR | java.lang.String | VARCHAR, VARGRAPHIC | VARCHAR | VARCHAR | VARCHAR | VARCHAR | DK_CM_VARCHAR |
mysql在映射boolean類型的時候,很多采用tinyint(1)的,最開始自己也是這樣的,myeclipse弄出映射后,
之前映射類型為java.lang.short,修改為java.lang.boolean類型,
修改pojo文件也修改為Boolean類型,可以錄入數據,
可今天早上起來再做的時候,發現映射的卻是個Byte類型了,表字段沒有改變。如上修改卻沒有用。
原因連我自己也不知道。
后來沒辦法只能修改表字段了,修改為bit類型的就可以了。
posted on 2009-03-28 00:44 duduli 閱讀(2143) 評論(2) 編輯 收藏 所屬分類: java 、數據庫