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
    (在您的
    persistence.xml
    或hibernate配置中)
  • 更改列的名称
  • 从中,只能使用以下方法转义此标识符:
@列(name=“\”desc\”)


此外,如果不是遗留数据库,请考虑改名。

您有一个名为“代码> DESC/<代码>的列,并且<代码> DESC是<代码> MySQL < /C>中的保留工作,请尝试另一个名称。