我正在将一个web应用程序从windows机器部署到运行mariadb 10.1.26的debian服务器(一切都在dev机器上运行)。问题是有些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;
}
我使用的hibernate属性是:
<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条答案
按热度按时间lpwwtiir1#
尝试以下解决方案之一。
解决方案1:
在hibernate配置文件的下面一行代码中添加方言。
<property name="hibernate.dialect">org.hibernate.dialect.MariaDBDialect</property>
解决方案2:我们在尝试创建名为“user”(mariadb)的jpa实体时遇到这个错误,这个名称可能是保留的。我们可以通过@table annotation更改表名来解决此问题:
或者手动更改表名。