Java Hibernate MariaDB DDL исполнение - PullRequest
       7

Java Hibernate MariaDB DDL исполнение

0 голосов
/ 29 сентября 2018

Я развертываю веб-приложение с компьютера с Windows на сервере Debian, на котором работает MariaDB 10.1.26 (все работает на компьютере разработчика).Проблема в том, что некоторые из DDL не выполняются.Рассматриваемый класс - это класс пользователя:

@Entity
public class User {

    @Id
    @Type(type = "uuid-char")
    @GeneratedValue(generator = "UUID")
    @GenericGenerator(name = "UUID", strategy = "org.hibernate.id.UUIDGenerator")
    private UUID id;

    private String firstname;

    private String lastname;

    @Column(unique = true)
    private String emailAddress;

    private String passwordHash;


  }

Используемые мной свойства гибернации:

<property name="show_sql">true</property>
<property name="hibernate.hbm2ddl.auto">update</property>

И ошибка, которую я получаю, такова:

org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL via JDBC Statement
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Specified key was too long; max key length is 767 bytes

Полагаю, это происходит из-за ключа UUID.Как я могу это исправить?

1 Ответ

0 голосов
/ 29 сентября 2018

Попробуйте одно из следующих решений.

Решение 1:

Добавьте диалект, используя строку кода ниже в файле конфигурации Hibernate.

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

Решение 2:

Эта ошибка возникает при попытке создать сущность JPA с именем «Пользователь» (Mariadb), которое может быть зарезервировано.Мы можем решить эту проблему, изменив имя таблицы с помощью аннотации @Table:

@Entity
@Table(name="users")
public class User {..}

Или измените имя таблицы вручную.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...