`
青蜂侠
  • 浏览: 50896 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

hibernate操作Mysql出现版本错误问题

    博客分类:
  • Java
阅读更多

问题描述:

Caused by: java.sql.BatchUpdateException: 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 'check, uploader, format, category, bookpk) values ('testbook', '1234567890', 'te' at line 1

 

以上是使用Hibernate向mysql 5.1中存储数据时出现的错误。元数据为Book,代码如下:

package org.brucefeng.sinter.domain;

import java.util.Date;
import java.util.List;

import org.apache.commons.lang.builder.ToStringBuilder;

public class Book {
	private String bookPK;
	private String title;
	private String isbn;
	private String author;
	private String description;
	private String press;
	private String filePath;
	private boolean checked;
	private int edition;
	private int pageCount;
	private double size;
	private BookFormat format;
	private Category category;
	private Date uploadDate;
	private User uploader;
	private List<BookTag> tags;
	private List<BookComment> comments;
	public Book() {
		// TODO Auto-generated constructor stub
	}
	public String getBookPK() {
		return bookPK;
	}
	private void setBookPK(String bookPK) {
		this.bookPK = bookPK;
	}
	public String getTitle() {
		return title;
	}
	public void setTitle(String title) {
		this.title = title;
	}
	public String getAuthor() {
		return author;
	}
	public void setAuthor(String author) {
		this.author = author;
	}
	public String getDescription() {
		return description;
	}
	public void setDescription(String description) {
		this.description = description;
	}
	public String getPress() {
		return press;
	}
	public void setPress(String press) {
		this.press = press;
	}
	public int getEdition() {
		return edition;
	}
	public void setEdition(int edition) {
		this.edition = edition;
	}
	public int getPageCount() {
		return pageCount;
	}
	public void setPageCount(int pageCount) {
		this.pageCount = pageCount;
	}
	public double getSize() {
		return size;
	}
	public void setSize(double size) {
		this.size = size;
	}
	public BookFormat getFormat() {
		return format;
	}
	public void setFormat(BookFormat format) {
		this.format = format;
	}
	public Date getUploadDate() {
		return uploadDate;
	}
	public void setUploadDate(Date uploadDate) {
		this.uploadDate = uploadDate;
	}
	public User getUploader() {
		return uploader;
	}
	public void setUploader(User uploader) {
		this.uploader = uploader;
	}
	public List<BookTag> getTags() {
		return tags;
	}
	public void setTags(List<BookTag> tags) {
		this.tags = tags;
	}
	public List<BookComment> getComments() {
		return comments;
	}
	public void setComments(List<BookComment> comments) {
		this.comments = comments;
	}
	public String getIsbn() {
		return isbn;
	}
	public void setIsbn(String isbn) {
		this.isbn = isbn;
	}
	public String getFilePath() {
		return filePath;
	}
	public void setFilePath(String filePath) {
		this.filePath = filePath;
	}
	
	public boolean isChecked() {
		return checked;
	}
	public void setChecked(boolean checked) {
		this.checked = checked;
	}
	public Category getCategory() {
		return category;
	}
	public void setCategory(Category category) {
		this.category = category;
	}
	public boolean isTransient(){
		return this.bookPK==null;
	}
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((author == null) ? 0 : author.hashCode());
		result = prime * result
				+ ((category == null) ? 0 : category.hashCode());
		result = prime * result + (checked ? 1231 : 1237);
		result = prime * result
				+ ((comments == null) ? 0 : comments.hashCode());
		result = prime * result
				+ ((description == null) ? 0 : description.hashCode());
		result = prime * result + edition;
		result = prime * result
				+ ((filePath == null) ? 0 : filePath.hashCode());
		result = prime * result + ((format == null) ? 0 : format.hashCode());
		result = prime * result + ((isbn == null) ? 0 : isbn.hashCode());
		result = prime * result + pageCount;
		result = prime * result + ((press == null) ? 0 : press.hashCode());
		long temp;
		temp = Double.doubleToLongBits(size);
		result = prime * result + (int) (temp ^ (temp >>> 32));
		result = prime * result + ((tags == null) ? 0 : tags.hashCode());
		result = prime * result + ((title == null) ? 0 : title.hashCode());
		result = prime * result
				+ ((uploadDate == null) ? 0 : uploadDate.hashCode());
		result = prime * result
				+ ((uploader == null) ? 0 : uploader.hashCode());
		return result;
	}
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Book other = (Book) obj;
		if (author == null) {
			if (other.author != null)
				return false;
		} else if (!author.equals(other.author))
			return false;
		if (category == null) {
			if (other.category != null)
				return false;
		} else if (!category.equals(other.category))
			return false;
		if (checked != other.checked)
			return false;
		if (comments == null) {
			if (other.comments != null)
				return false;
		} else if (!comments.equals(other.comments))
			return false;
		if (description == null) {
			if (other.description != null)
				return false;
		} else if (!description.equals(other.description))
			return false;
		if (edition != other.edition)
			return false;
		if (filePath == null) {
			if (other.filePath != null)
				return false;
		} else if (!filePath.equals(other.filePath))
			return false;
		if (format == null) {
			if (other.format != null)
				return false;
		} else if (!format.equals(other.format))
			return false;
		if (isbn == null) {
			if (other.isbn != null)
				return false;
		} else if (!isbn.equals(other.isbn))
			return false;
		if (pageCount != other.pageCount)
			return false;
		if (press == null) {
			if (other.press != null)
				return false;
		} else if (!press.equals(other.press))
			return false;
		if (Double.doubleToLongBits(size) != Double
				.doubleToLongBits(other.size))
			return false;
		if (tags == null) {
			if (other.tags != null)
				return false;
		} else if (!tags.equals(other.tags))
			return false;
		if (title == null) {
			if (other.title != null)
				return false;
		} else if (!title.equals(other.title))
			return false;
		if (uploadDate == null) {
			if (other.uploadDate != null)
				return false;
		} else if (!uploadDate.equals(other.uploadDate))
			return false;
		if (uploader == null) {
			if (other.uploader != null)
				return false;
		} else if (!uploader.equals(other.uploader))
			return false;
		return true;
	}
	@Override
	public String toString() {
		return ToStringBuilder.reflectionToString(this);
	}
	

}

 其配置文件为:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
	"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
	"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="org.brucefeng.sinter.domain">
  <class name="Book" table="book">
  	<id name="bookPK" column="bookpk" unsaved-value="null">
  		<generator class="uuid.hex"></generator>
  	</id>
  	<property name="title" column="title" type="string"></property>
  	<property name="isbn" column="ISBN" type="string"></property>
  	<property name="author" column="author" type="string"></property>
  	<property name="press" column="press" type="string"></property>
  	<property name="description" column="description" type="text"></property>
  	<property name="edition" column="edition" type="integer"></property>
  	<property name="pageCount" column="pagecount" type="integer"></property>
  	<property name="size" column="size" type="double"></property>
  	<property name="filePath" column="filepath" type="string"></property>
  	<property name="uploadDate" column="uploaddate" type="timestamp"></property>
  	<property name="check" column="check" type="boolean"></property>
  	<many-to-one name="uploader" column="uploader" class="org.brucefeng.sinter.domain.User"
  				 unique="true" fetch="join" lazy="false" cascade="save-update"></many-to-one>
  	<many-to-one name="format" column="format" class="org.brucefeng.sinter.domain.BookFormat"
  				 unique="true" lazy="false" fetch="join" cascade="save-update"></many-to-one>
  	<many-to-one name="category" column="category" class="org.brucefeng.sinter.domain.Category"
  				 unique="true" fetch="join" lazy="false" cascade="all"></many-to-one>
  	<list name="tags" table="book_tag" cascade="save-update" lazy="false">
  		<key column="bookpk"></key>
  		<index column="index"></index>
  		<many-to-many column="tagpk" class="org.brucefeng.sinter.domain.BookTag" fetch="join"></many-to-many>
  	</list>
  	<list name="comments" table="book_comment" cascade="all" lazy="false">
  		<key column="bookpk"></key>
  		<index column="index"></index>
  		<many-to-many column="commentpk" class="org.brucefeng.sinter.domain.BookComment" fetch="join"></many-to-many>
  	</list>
  </class>
</hibernate-mapping>

问题解决

在数据库关系中出现了多对一,多对多关系,相对较为复杂,但配置均正确,出现上述问题实为诡异。在查询了多方资料无果之后,想起了Mysql中存在关键字问题,如果在数据库表的列名使用关键字或保留字的话,将会出现问题。于是查了一下Mysql关键字,发现在数据库表中使用了check和index两个关键字,修改之后保存即可顺利进行。

 

Mysql关键字

ADD ALL ALTER
ANALYZE AND AS
ASC ASENSITIVE BEFORE
BETWEEN BIGINT BINARY
BLOB BOTH BY
CALL CASCADE CASE
CHANGE CHAR CHARACTER
CHECK COLLATE COLUMN
CONDITION CONNECTION CONSTRAINT
CONTINUE CONVERT CREATE
CROSS CURRENT_DATE CURRENT_TIME
CURRENT_TIMESTAMP CURRENT_USER CURSOR
DATABASE DATABASES DAY_HOUR
DAY_MICROSECOND DAY_MINUTE DAY_SECOND
DEC DECIMAL DECLARE
DEFAULT DELAYED DELETE
DESC DESCRIBE DETERMINISTIC
DISTINCT DISTINCTROW DIV
DOUBLE DROP DUAL
EACH ELSE ELSEIF
ENCLOSED ESCAPED EXISTS
EXIT EXPLAIN FALSE
FETCH FLOAT FLOAT4
FLOAT8 FOR FORCE
FOREIGN FROM FULLTEXT
GOTO GRANT GROUP
HAVING HIGH_PRIORITY HOUR_MICROSECOND
HOUR_MINUTE HOUR_SECOND IF
IGNORE IN INDEX
INFILE INNER INOUT
INSENSITIVE INSERT INT
INT1 INT2 INT3
INT4 INT8 INTEGER
INTERVAL INTO IS
ITERATE JOIN KEY
KEYS KILL LABEL
LEADING LEAVE LEFT
LIKE LIMIT LINEAR
LINES LOAD LOCALTIME
LOCALTIMESTAMP LOCK LONG
LONGBLOB LONGTEXT LOOP
LOW_PRIORITY MATCH MEDIUMBLOB
MEDIUMINT MEDIUMTEXT MIDDLEINT
MINUTE_MICROSECOND MINUTE_SECOND MOD
MODIFIES NATURAL NOT
NO_WRITE_TO_BINLOG NULL NUMERIC
ON OPTIMIZE OPTION
OPTIONALLY OR ORDER
OUT OUTER OUTFILE
PRECISION PRIMARY PROCEDURE
PURGE RAID0 RANGE
READ READS REAL
REFERENCES REGEXP RELEASE
RENAME REPEAT REPLACE
REQUIRE RESTRICT RETURN
REVOKE RIGHT RLIKE
SCHEMA SCHEMAS SECOND_MICROSECOND
SELECT SENSITIVE SEPARATOR
SET SHOW SMALLINT
SPATIAL SPECIFIC SQL
SQLEXCEPTION SQLSTATE SQLWARNING
SQL_BIG_RESULT SQL_CALC_FOUND_ROWS SQL_SMALL_RESULT
SSL STARTING STRAIGHT_JOIN
TABLE TERMINATED THEN
TINYBLOB TINYINT TINYTEXT
TO TRAILING TRIGGER
TRUE UNDO UNION
UNIQUE UNLOCK UNSIGNED
UPDATE USAGE USE
USING UTC_DATE UTC_TIME
UTC_TIMESTAMP VALUES VARBINARY
VARCHAR VARCHARACTER VARYING
WHEN WHERE WHILE
WITH WRITE X509
XOR YEAR_MONTH ZEROFILL


MySQL允许部分关键字用做未引起来的识别符,因为许多人以前曾使用过它们。下面列出了一些例子:
ACTION
BIT
DATE
ENUM
NO
TEXT
TIME
TIMESTAMP

分享到:
评论

相关推荐

    struts+hibernate+mysql操作源码

    这是个人写的利用struts+hibernate+mysql写的源代码。。 是关于一个插入数据的操作。。 便宜啊 。。。个人经验总结啊。。 欢迎大家都来顶啊。。。下次传个更好的。。更大的。。如果有什么错误,,请联系我:85322820...

    毕业设计基于Struts+Hibernate+Mysql的网上书城系统源码

    程序测试环境: MyEclipse8.5编程软件 + Win7操作系统 + MySql5.0数据库 本系统使用Struts2.0 + Spring2.0 +Hibernate 3.2 (即:SSH)及以上版本架构整合模式开发 本系统作为学生学习SSH很有参考价值,实现了图书...

    新闻信息网Struts2+Sping+Hibernate+MySQL

    本系统根据企业的需求进行设计,具有以下特点:界面友好,采用人机对话方式,操作简单。信息查询灵活、快捷、数据存储安全。实现用户管理功能,主要包括用户登录与注册功能。对用户输入的数据,系统进行严格的数据...

    struts+spring+hibernate图书管理系统 | 毕业设计

    程序测试环境: MyEclipse8.5编程软件 + Win7操作系统 + MySql5.0数据库 本系统使用Struts2.0 + Spring2.0 +Hibernate 3.2 (即:SSH)及以上版本架构整合模式开发 本系统作为学生学习SSH很有参考价值,实现了图书...

    基于Struts2+Spring+Hibernate+Jsp+Mysql5的项目申报系统源码

    整个系统的设计过程都充分考虑了数据的安全、稳定及可靠等问题,而且操作过程简单。本系统通过科学的管理方式、便捷的服务提高了工作效率,减少了数据存储上的错误和遗漏。 大学生项目申报管理系统使用Java语言,...

    双鱼林struts+spring+hibernate图书管理系统.rar

    程序测试环境: MyEclipse8.5编程软件 + Win7操作系统 + MySql5.0数据库 本系统使用Struts2.0 + Spring2.0 +Hibernate 3.2 (即:SSH)及以上版本架构整合模式开发 本系统作为学生学习SSH很有参考价值,实现了图书...

    spring+spring mvc+hibernate开发工程财务管理辅助系统

    jdk8+tomcat8+mysql+Eclipse+maven 项目技术(必填) spring+spring mvc+hibernate+easyui+jquery+ehcache http://localhost:8080/admin/index 账号HBU001 111111 管理员admin admin 注意事项 1.系统的默认用户超级...

    hibernate_jruby_example:jruby 中的 Hibernate 使用示例

    schema.sql# Install dependenciesbundle installjbundle install# Run tests/examplesbundle exec rspec spec故障排除如果您收到Unsupported major.minor version错误,则意味着您有另一个 JDK 版本。 尝试通过...

    实验室管理系统(ssh+jsp+mysql5.x)含运行截图

    在技术架构上,实验室管理系统采用SSH框架(Struts2、Spring和Hibernate),这一框架结合了MVC设计模式,通过Struts2处理请求的分发,Spring负责依赖注入和事务管理,而Hibernate则处理所有与数据库相关的操作。...

    ssh(structs,spring,hibernate)框架中的上传下载

    其中Hibernate 2相关的封装类位于org.springframework.orm.hibernate2.*包中,而Hibernate 3.0的封装类位于org.springframework.orm.hibernate3.*包中,需要根据您所选用Hibernate版本进行正确选择。  3、Lob字段...

    spring mvc+hibernate联合开发的学生成绩管理系统

    基于java语言,spring mvc+hibernate联合开发,mysql数据库,设置登录过滤器,错误拦截器,在必要填写字段设置啦字段长度判断,在学号工号等唯一字段进行检测,合理的数据库映射关系,在一些操作做到啦级联管理

    基于Jsp的在线考试系统毕业设计论文

    在线考试系统用的是ssh稳定框架整合,为了保证用hibernate操作数据库不出错,所有的数据库表不是用mysql企业管理器或查询分析器来完成的,而是用hibernate的pojo类和hbm.xml文件导入的,然而,配置这些关联映射却很...

    《MyEclipse 6 Java 开发中文教程》前10章

    1.5.1 MySQL 5 官方版本的下载和安装,运行 32 1.5.2 MySQL 5绿色版的下载安装和运行 32 1.5.2.1 下载 32 1.5.2.2 用法图解 33 1.6 Eclipse 3.3的下载,安装和运行 35 1.7 MyEclipse 6的下载,安装和运行 37 1.7.1...

    jboa_办公管理系统_21年0610无错运行

    自动建表建关系,当然数据得自己加,下载下来的是oracle环境需要建id,可修改mysql环境,里面只有mysql5的驱动,版本不相同的自己去下,用mysql环境,请修改映射,把注释的id自增放出来。 别问怎么运行,因为运行不...

    毕业设计-车辆管理软件(源代码+说明)

    建议开发者使用以下环境,可以避免版本带来的问题 IDE: IntelliJ IDEA、Eclipse DB: Mysql5.7 JDK: JDK1.8 Maven: Maven3.2 运行环境 数据库服务器:Mysql5.7 JAVA平台: JRE1.8 Server: Tomcat8.5 操作系统:Windows...

    JspRun!社区论坛系统 v6.0.0 build 20110516 GBK 安装版.zip

    12、修改了:在后台修改分类选项的选项内容后,前台使用该分类选项的主题中的选项内容出现错误的问题。 13、修复了:设置“论坛关闭的原因”后,当论坛关闭时出现的提示信息仍为默认的提示信息的错误。 14、修复了...

    JspRun!社区论坛系统 v6.0.0 build 20110516 UTF-8 源码版.zip

    12、修改了:在后台修改分类选项的选项内容后,前台使用该分类选项的主题中的选项内容出现错误的问题。 13、修复了:设置“论坛关闭的原因”后,当论坛关闭时出现的提示信息仍为默认的提示信息的错误。 14、修复了...

    JspRun!社区论坛系统 v6.0.0 build 20110516 GBK 源码版.zip

    12、修改了:在后台修改分类选项的选项内容后,前台使用该分类选项的主题中的选项内容出现错误的问题。 13、修复了:设置“论坛关闭的原因”后,当论坛关闭时出现的提示信息仍为默认的提示信息的错误。 14、修复了...

    JspRun!社区论坛系统 v6.0.0 build 20110516 UTF-8 安装版.zip

    12、修改了:在后台修改分类选项的选项内容后,前台使用该分类选项的主题中的选项内容出现错误的问题。 13、修复了:设置“论坛关闭的原因”后,当论坛关闭时出现的提示信息仍为默认的提示信息的错误。 14、修复了...

    基于Java(SSH)+ionic + MySQL实现电子词典APP【100011513】

    用户可把查询到的生词进行加入收藏的操作,以供用户进行后续的复习查看操作,也避免出现用户对同一词语进行反复查询的情况。 3.3.6 阅读模块 本模块显示在翻译界面当中,主要为用户提供一些值得学习的英文文章,...

Global site tag (gtag.js) - Google Analytics