首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java Hibernate MariaDB DDL执行

Java Hibernate MariaDB DDL执行
EN

Stack Overflow用户
提问于 2018-09-30 04:06:38
回答 1查看 80关注 0票数 0

我正在将一个web应用程序从windows机器部署到运行MariaDB 10.1.26的debian服务器上(一切都在dev机器上运行)。问题是有些DDL没有被执行。有问题的类是user类:

代码语言:javascript
复制
@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;


  }

我使用的hibernate属性是:

代码语言:javascript
复制
<property name="show_sql">true</property>
<property name="hibernate.hbm2ddl.auto">update</property>

我得到的错误是这样的:

代码语言:javascript
复制
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密钥造成的。我该如何解决这个问题呢?

EN

回答 1

Stack Overflow用户

发布于 2018-09-30 04:40:12

请尝试以下解决方案之一。

解决方案1:

使用hibernate配置文件中的以下代码行添加方言。

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

解决方案2:

当我们尝试创建名为"User“(Mariadb)的JPA实体时,我们得到了这个错误,这个实体可能是保留的。我们可以通过@Table注释更改表名来解决这个问题:

代码语言:javascript
复制
@Entity
@Table(name="users")
public class User {..}

或者手动更改表名。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52572124

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档