Java Hibernate抛出SQLGrammarException
实体类是:Java Hibernate抛出SQLGrammarException,java,mysql,hibernate,Java,Mysql,Hibernate,实体类是: @Entity @Table(name = "movieDetail") public class MovieDetailImpl implements MovieDetail { @Id // primary key @Column(name = "idmovieDetail") @GeneratedValue(strategy = GenerationType.IDENTITY) private long id; @Column(
@Entity
@Table(name = "movieDetail")
public class MovieDetailImpl implements MovieDetail {
@Id
// primary key
@Column(name = "idmovieDetail")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@Column(name = "cast")
private String cast;
@Column(name = "producer")
private String producer;
@Column(name = "director")
private String director;
@Column(name = "trailer")
private URL trailer;
@Column(name = "photo")
private URL photo;
@Column(name = "plot")
private URL plot;
@Column(name = "desc")
private String desc;
@Column(name = "moreDetails")
private URL moreDetails;
// Getters/Setters
}
我正在尝试仅使用演员集
持久化MovieDetail
实体。其余字段为null
Hibernate引发以下异常:
014-08-17 21:47:35信息交易工厂发起人:62-HH000399:
使用默认事务策略(直接JDBC事务)
2014-08-17 21:47:35信息查询Translator工厂:47-HH000397:
使用ASTQueryTranslatorFactory
2014-08-17 21:47:36信息HibernateTransactionManager:341-使用
数据来源
[org.springframework.jdbc.datasource。DriverManagerDataSource@1fba434a]
HibernateTransactionManager的Hibernate SessionFactory版本
Hibernate:插入电影细节(演员、描述、导演、更多细节、,
照片、绘图、制作人、预告片)值(?,,,,,,,,,,,?)
2014-08-17 21:47:36警告SqlExceptionHelper:144-SQL错误:1064,
SQLState:42000
2014-08-17 21:47:36错误SqlExceptionHelper:146-您有一个错误
在SQL语法中;检查与您的MySQL对应的手册
服务器版本,以便在“desc,director,
更多详情、照片、情节、制作人、预告片)值('testGetAll'位于
第1行
2014-08-17 21:47:36信息一般应用上下文:873-关闭
org.springframework.context.support。GenericApplicationContext@40266966:
启动日期[Sun Aug 17 21:47:34 PDT 2014];上下文层次结构的根
在我的“database.properties”中,我有:
jdbc.dialogue=org.hibernate.dialogue.mysql5dialogue
我使用的是MySQL社区服务器5.6.20
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.28</version>
</dependency>
mysql
mysql连接器java
5.1.28
我在这里遗漏了什么吗?您有一个名为
desc
的列,而desc
是MySql(以及许多其他数据库)中的保留工作
你可以:
- 从,您可以使hibernate转义所有列和表名:
(在您的hibernate.globally\u quoted\u identifiers=true
或hibernate配置中)persistence.xml
- 更改列的名称
- 从中,只能使用以下方法转义此标识符:
此外,如果不是遗留数据库,请考虑改名。
您有一个名为“代码> DESC/<代码>的列,并且<代码> DESC是<代码> MySQL < /C>中的保留工作,请尝试另一个名称。