Hibernate生成的DDL中的语法错误错误“ type = MyISAM”

我的Java代码出现此错误

   Caused by :`com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException`: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB` server version for the right syntax to use near 'type = `MyISAM`' at line 1

这是hibernate传递的查询:

Hibernate: create table EMPLOYEE (emp_id integer not null, FNAME varchar(255), LNAME varchar(255), primary key (emp_id)) type=MyISAM

我已经查看了与此错误有关的所有问题。但是在所有这些问题中,用户本身都在传递查询“ type = MyISAM”,因此他们可以将“ type

更改为“ engine”,但是hibernate在这里负责创建表,因此我不知道错误在哪里以及如何解决。

这是我的配置文件:

<hibernate-configuration>

<session-factory >

<property name="hibernate.hbm2ddl.auto">create</property>

<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>

<property name="hibernate.connection.url">jdbc:mysql://localhost/servletcheck</property>

<property name="hibernate.connection.username">root</property>

<property name="hibernate.connection.password"> </property>

<property name="hibernate.dialect"> org.hibernate.dialect.MySQLDialect</property>

<property name="hibernate.show_sql">true</property>

<mapping resource="Employee.hbm.xml"/>

</session-factory>

</hibernate-configuration>

这是我的映射文件:

<hibernate-mapping>

<class name="first.Employee" table="EMPLOYEE">

<id name="id" type="int">

<column name="emp_id" />

<generator class="assigned" />

</id>

<property name="fname" type="java.lang.String">

<column name="FNAME" />

</property>

<property name="lname" type="java.lang.String">

<column name="LNAME" />

</property>

</class>

</hibernate-mapping>

这是我的课程文件:

public class StoreData {

public static void main(String[] args) {

Configuration cfg=new Configuration();

cfg.configure("hibernate.cfg.xml");

SessionFactory factory=cfg.buildSessionFactory();

Session session=factory.openSession();

org.hibernate.Transaction t=session.beginTransaction();

Employee e=new Employee();

e.setId(1);

e.setFname("yogesh");

e.setLname("Meghnani");

session.persist(e);

t.commit();

}

}

回答:

问题是该方言org.hibernate.dialect.MySQLDialect适用于MySQL

4.x或更早版本。TYPE=MYISAM由该方言生成的片段在MySQL 4.0中已弃用,在5.5中已删除。

鉴于您使用了MariaDB,因此需要使用以下一种方法(取决于MariaDB的版本,可能还取决于Hibernate的版本):

  • org.hibernate.dialect.MariaDBDialect
  • org.hibernate.dialect.MariaDB53Dialect

如果您使用的是MySQL,或者您的Hibernate版本中不存在上述两种MariaDB方言:

  • org.hibernate.dialect.MySQL5Dialect
  • org.hibernate.dialect.MySQL55Dialect
  • org.hibernate.dialect.MySQL57Dialect

以上是 Hibernate生成的DDL中的语法错误错误“ type = MyISAM” 的全部内容, 来源链接: utcz.com/qa/413504.html

回到顶部