保留关键字(Reserved Words)导致的Jpa保存错误

使用Jpa操作数据库时,如果字段名称使用了数据库保留关键字,会报错:

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'option, state, id) values ('2017-09-18 16:50:53.477', '0', '2017-09-18 16:50:53.' at line 1
然后,我到mysql官网查看了一下保留关键字都有(带(R)标识的是保留关键字),我们在创建表的时候,字段名称表名称注意避免。

Table 9.2 Keywords and Reserved Words in MySQL 5.5

ACCESSIBLE (R)ACTIONADD (R)
AFTERAGAINSTAGGREGATE
ALGORITHMALL (R)ALTER (R)
ANALYZE (R)AND (R)ANY
AS (R)ASC (R)ASCII
ASENSITIVE (R)ATAUTHORS
AUTOEXTEND_SIZEAUTO_INCREMENTAVG
AVG_ROW_LENGTHBACKUPBEFORE (R)
BEGINBETWEEN (R)BIGINT (R)
BINARY (R)BINLOGBIT
BLOB (R)BLOCKBOOL
BOOLEANBOTH (R)BTREE
BY (R)BYTECACHE
CALL (R)CASCADE (R)CASCADED
CASE (R)CATALOG_NAMECHAIN
CHANGE (R)CHANGEDCHAR (R)
CHARACTER (R)CHARSETCHECK (R)
CHECKSUMCIPHERCLASS_ORIGIN
CLIENTCLOSECOALESCE
CODECOLLATE (R)COLLATION
COLUMN (R)COLUMNSCOLUMN_NAME
COMMENTCOMMITCOMMITTED
COMPACTCOMPLETIONCOMPRESSED
CONCURRENTCONDITION (R)CONNECTION
CONSISTENTCONSTRAINT (R)CONSTRAINT_CATALOG
CONSTRAINT_NAMECONSTRAINT_SCHEMACONTAINS
CONTEXTCONTINUE (R)CONTRIBUTORS
CONVERT (R)CPUCREATE (R)
CROSS (R)CUBECURRENT_DATE (R)
CURRENT_TIME (R)CURRENT_TIMESTAMP (R)CURRENT_USER (R)
CURSOR (R)CURSOR_NAMEDATA
DATABASE (R)DATABASES (R)DATAFILE
DATEDATETIMEDAY
DAY_HOUR (R)DAY_MICROSECOND (R)DAY_MINUTE (R)
DAY_SECOND (R)DEALLOCATEDEC (R)
DECIMAL (R)DECLARE (R)DEFAULT (R)
DEFINERDELAYED (R)DELAY_KEY_WRITE
DELETE (R)DESC (R)DESCRIBE (R)
DES_KEY_FILEDETERMINISTIC (R)DIRECTORY
DISABLEDISCARDDISK
DISTINCT (R)DISTINCTROW (R)DIV (R)
DODOUBLE (R)DROP (R)
DUAL (R)DUMPFILEDUPLICATE
DYNAMICEACH (R)ELSE (R)
ELSEIF (R)ENABLEENCLOSED (R)
ENDENDSENGINE
ENGINESENUMERROR[a]
ERRORSESCAPEESCAPED (R)
EVENTEVENTSEVERY
EXECUTEEXISTS (R)EXIT (R)
EXPANSIONEXPLAIN (R)EXTENDED
EXTENT_SIZEFALSE (R)FAST
FAULTSFETCH (R)FIELDS
FILEFIRSTFIXED
FLOAT (R)FLOAT4 (R)FLOAT8 (R)
FLUSHFOR (R)FORCE (R)
FOREIGN (R)FOUNDFRAC_SECOND[b]
FROM (R)FULLFULLTEXT (R)
FUNCTIONGENERAL[c]GEOMETRY
GEOMETRYCOLLECTIONGET_FORMATGLOBAL
GRANT (R)GRANTSGROUP (R)
HANDLERHASHHAVING (R)
HELPHIGH_PRIORITY (R)HOST
HOSTSHOURHOUR_MICROSECOND (R)
HOUR_MINUTE (R)HOUR_SECOND (R)IDENTIFIED
IF (R)IGNORE (R)IGNORE_SERVER_IDS[d]
IMPORTIN (R)INDEX (R)
INDEXESINFILE (R)INITIAL_SIZE
INNER (R)INNOBASE[e]INNODB[f]
INOUT (R)INSENSITIVE (R)INSERT (R)
INSERT_METHODINSTALLINT (R)
INT1 (R)INT2 (R)INT3 (R)
INT4 (R)INT8 (R)INTEGER (R)
INTERVAL (R)INTO (R)INVOKER
IOIO_THREADIPC
IS (R)ISOLATIONISSUER
ITERATE (R)JOIN (R)KEY (R)
KEYS (R)KEY_BLOCK_SIZEKILL (R)
LANGUAGELASTLEADING (R)
LEAVE (R)LEAVESLEFT (R)
LESSLEVELLIKE (R)
LIMIT (R)LINEAR (R)LINES (R)
LINESTRINGLISTLOAD (R)
LOCALLOCALTIME (R)LOCALTIMESTAMP (R)
LOCK (R)LOCKSLOGFILE
LOGSLONG (R)LONGBLOB (R)
LONGTEXT (R)LOOP (R)LOW_PRIORITY (R)
MASTERMASTER_CONNECT_RETRYMASTER_HEARTBEAT_PERIOD[g]
MASTER_HOSTMASTER_LOG_FILEMASTER_LOG_POS
MASTER_PASSWORDMASTER_PORTMASTER_SERVER_ID
MASTER_SSLMASTER_SSL_CAMASTER_SSL_CAPATH
MASTER_SSL_CERTMASTER_SSL_CIPHERMASTER_SSL_KEY
MASTER_SSL_VERIFY_SERVER_CERT (R)MASTER_USERMATCH (R)
MAXVALUE (R)MAX_CONNECTIONS_PER_HOURMAX_QUERIES_PER_HOUR
MAX_ROWSMAX_SIZEMAX_UPDATES_PER_HOUR
MAX_USER_CONNECTIONSMEDIUMMEDIUMBLOB (R)
MEDIUMINT (R)MEDIUMTEXT (R)MEMORY
MERGEMESSAGE_TEXTMICROSECOND
MIDDLEINT (R)MIGRATEMINUTE
MINUTE_MICROSECOND (R)MINUTE_SECOND (R)MIN_ROWS
MOD (R)MODEMODIFIES (R)
MODIFYMONTHMULTILINESTRING
MULTIPOINTMULTIPOLYGONMUTEX
MYSQL_ERRNONAMENAMES
NATIONALNATURAL (R)NCHAR
NDBNDBCLUSTERNEW
NEXTNONODEGROUP
NONENOT (R)NO_WAIT
NO_WRITE_TO_BINLOG (R)NULL (R)NUMERIC (R)
NVARCHAROFFSETOLD_PASSWORD
ON (R)ONEONE_SHOT
OPENOPTIMIZE (R)OPTION (R)
OPTIONALLY (R)OPTIONSOR (R)
ORDER (R)OUT (R)OUTER (R)
OUTFILE (R)OWNERPACK_KEYS
PAGEPARSERPARTIAL
PARTITIONPARTITIONINGPARTITIONS
PASSWORDPHASEPLUGIN
PLUGINSPOINTPOLYGON
PORTPRECISION (R)PREPARE
PRESERVEPREVPRIMARY (R)
PRIVILEGESPROCEDURE (R)PROCESSLIST
PROFILEPROFILESPROXY[h]
PURGE (R)QUARTERQUERY
QUICKRANGE (R)READ (R)
READS (R)READ_ONLYREAD_WRITE (R)
REAL (R)REBUILDRECOVER
REDOFILEREDO_BUFFER_SIZEREDUNDANT
REFERENCES (R)REGEXP (R)RELAY[i]
RELAYLOGRELAY_LOG_FILERELAY_LOG_POS
RELAY_THREADRELEASE (R)RELOAD
REMOVERENAME (R)REORGANIZE
REPAIRREPEAT (R)REPEATABLE
REPLACE (R)REPLICATIONREQUIRE (R)
RESETRESIGNAL (R)RESTORE
RESTRICT (R)RESUMERETURN (R)
RETURNSREVOKE (R)RIGHT (R)
RLIKE (R)ROLLBACKROLLUP
ROUTINEROWROWS
ROW_FORMATRTREESAVEPOINT
SCHEDULESCHEMA (R)SCHEMAS (R)
SCHEMA_NAMESECONDSECOND_MICROSECOND (R)
SECURITYSELECT (R)SENSITIVE (R)
SEPARATOR (R)SERIALSERIALIZABLE
SERVERSESSIONSET (R)
SHARESHOW (R)SHUTDOWN
SIGNAL (R)SIGNEDSIMPLE
SLAVESLOW[j]SMALLINT (R)
SNAPSHOTSOCKETSOME
SONAMESOUNDSSOURCE
SPATIAL (R)SPECIFIC (R)SQL (R)
SQLEXCEPTION (R)SQLSTATE (R)SQLWARNING (R)
SQL_BIG_RESULT (R)SQL_BUFFER_RESULTSQL_CACHE
SQL_CALC_FOUND_ROWS (R)SQL_NO_CACHESQL_SMALL_RESULT (R)
SQL_THREADSQL_TSI_DAYSQL_TSI_FRAC_SECOND[k]
SQL_TSI_HOURSQL_TSI_MINUTESQL_TSI_MONTH
SQL_TSI_QUARTERSQL_TSI_SECONDSQL_TSI_WEEK
SQL_TSI_YEARSSL (R)START
STARTING (R)STARTSSTATUS
STOPSTORAGESTRAIGHT_JOIN (R)
STRINGSUBCLASS_ORIGINSUBJECT
SUBPARTITIONSUBPARTITIONSSUPER
SUSPENDSWAPSSWITCHES
TABLE (R)TABLESTABLESPACE
TABLE_CHECKSUMTABLE_NAMETEMPORARY
TEMPTABLETERMINATED (R)TEXT
THANTHEN (R)TIME
TIMESTAMPTIMESTAMPADDTIMESTAMPDIFF
TINYBLOB (R)TINYINT (R)TINYTEXT (R)
TO (R)TRAILING (R)TRANSACTION
TRIGGER (R)TRIGGERSTRUE (R)
TRUNCATETYPETYPES
UNCOMMITTEDUNDEFINEDUNDO (R)
UNDOFILEUNDO_BUFFER_SIZEUNICODE
UNINSTALLUNION (R)UNIQUE (R)
UNKNOWNUNLOCK (R)UNSIGNED (R)
UNTILUPDATE (R)UPGRADE
USAGE (R)USE (R)USER
USER_RESOURCESUSE_FRMUSING (R)
UTC_DATE (R)UTC_TIME (R)UTC_TIMESTAMP (R)
VALUEVALUES (R)VARBINARY (R)
VARCHAR (R)VARCHARACTER (R)VARIABLES
VARYING (R)VIEWWAIT
WARNINGSWEEKWHEN (R)
WHERE (R)WHILE (R)WITH (R)
WORKWRAPPERWRITE (R)
X509XAXML
XOR (R)YEARYEAR_MONTH (R)
ZEROFILL (R)  

[a] ERROR: added in 5.5.3 (nonreserved)

[b] FRAC_SECOND: removed in 5.5.3

[c] GENERAL: added in 5.5.3 (reserved); became nonreserved in 5.5.8

[d] IGNORE_SERVER_IDS: became nonreserved in 5.5.8

[e] INNOBASE: removed in 5.5.3

[f] INNODB: removed in 5.5.3

[g] MASTER_HEARTBEAT_PERIOD: became nonreserved in 5.5.8

[h] PROXY: added in 5.5.7 (nonreserved)

[i] RELAY: added in 5.5.3 (nonreserved)

[j] SLOW: added in 5.5.3 (reserved); became nonreserved in 5.5.8

[k] SQL_TSI_FRAC_SECOND: removed in 5.5.3

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JPA是Java Persistence API的缩写,它是一种用于持久化数据的Java规范。要保存多条数据,可以使用JPA的EntityManager来完成。 首先,我们需要创建一个实体类来映射我们要保存的数据。这个实体类需要使用@Entity注解来标记,并定义对应的属性和表结构。例如,我们可以创建一个实体类User,它包含id、name、age等属性。 接下来,我们可以使用EntityManager的persist方法来保存多条数据。首先,我们需要获取一个EntityManager对象,可以通过注入或者创建EntityManagerFactory来获得。然后,我们可以使用EntityManager的beginTransaction方法开启一个事务。 在事务中,我们可以通过实例化多个User对象,并设置它们的属性。然后,我们可以使用EntityManager的persist方法来保存这些User对象。在调用persist方法后,实体对象会被标记为持久化状态,但实际的数据库操作会在事务提交时才执行。 最后,我们可以使用事务的commit方法来提交事务。在事务提交后,保存的多条数据会被写入数据库。 以下是一个保存多条User数据的示例代码: ```java EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("yourPersistenceUnitName"); EntityManager entityManager = entityManagerFactory.createEntityManager(); entityManager.getTransaction().begin(); User user1 = new User(); user1.setName("张三"); user1.setAge(20); entityManager.persist(user1); User user2 = new User(); user2.setName("李四"); user2.setAge(25); entityManager.persist(user2); entityManager.getTransaction().commit(); entityManager.close(); entityManagerFactory.close(); ``` 以上是使用JPA保存多条数据的简单步骤。通过使用EntityManager的persist方法和事务的commit方法,我们可以很方便地保存多条数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值