Java 为什么';唯一=真';在hibernate实体中不工作?

Java 为什么';唯一=真';在hibernate实体中不工作?,java,mysql,hibernate,jpa,Java,Mysql,Hibernate,Jpa,我创建了一个具有表名和列名的实体。 我还为列名添加了uniquekey约束。但当我运行时,它显示以下错误: org.hibernate.tool.schema.spi.CommandAcceptanceException:错误 执行DDL“alter table component add约束 UK_CO7RO6KYJHFIK027H0Y4D3N3独特(成分名称) java.sql.SQLSyntaxErrorException:指定的键太长;最大键 长度为1000字节 运行spring启动应用

我创建了一个具有表名和列名的实体。 我还为列名添加了uniquekey约束。但当我运行时,它显示以下错误:

org.hibernate.tool.schema.spi.CommandAcceptanceException:错误 执行DDL“alter table component add约束 UK_CO7RO6KYJHFIK027H0Y4D3N3独特(成分名称)

java.sql.SQLSyntaxErrorException:指定的键太长;最大键 长度为1000字节

  • 运行spring启动应用程序后,我尝试在MySQL workbench中手动添加唯一约束。-不起作用

  • 我添加了以下代码-不起作用

  • 尝试在Mysql workbench中手动创建一个表,并在以后尝试使用unique键更改列名。这是可行的。但我希望hibernate为我做到这一点
  • 我想保存的成分没有任何重复。我不想重复条目。
    我已经看过了其他的答案,但没有一个答案对我有帮助。

    你能删除吗

    ,unique = true
    
    
    从@Column注释和try中,似乎有一个hibernate错误。当使用unique true时,它不遵守命名策略

    有关更多信息,请查看此帖子

    这个呢

    删除unique=true后,我能够生成具有指定名称的unique约束,该名称为“uk\u component\u name”。因为它已在@Table注释中指定

    您遇到的错误是因为hibernate正在生成一个唯一的约束名称,该名称已达到允许的限制,并且没有考虑您声明的约束名称。

    是否可以删除

    ,unique = true
    
    
    从@Column注释和try中,似乎有一个hibernate错误。当使用unique true时,它不遵守命名策略

    有关更多信息,请查看此帖子

    这个呢

    删除unique=true后,我能够生成具有指定名称的unique约束,该名称为“uk\u component\u name”。因为它已在@Table注释中指定


    您遇到的错误是因为hibernate正在生成一个唯一的约束名称,该名称达到了允许的限制,并且没有考虑您声明的约束名称。

    我尝试在@column中添加length=20。
    它运行完全正常,没有任何错误。

    我尝试在@column中添加length=20。
    它工作完全正常,没有任何错误。

    可能重复的请在之前搜索-。只需限制IngreditName字段的长度。可能重复的我已经通过了其他答案,但这些解决方案都没有帮助我。他们为MySQL提供了我不需要的解决方案。我最终认为这是因为长度@Column中的属性。此解决方案不存在于您发送的任何问题中。可能重复的请在-,之前进行搜索。只需限制IngreditName字段的长度。可能重复的我已经查看了其他答案,但这些解决方案都没有帮助我。他们提供了我不需要的MySQL解决方案。我最终认为这是因为@Column中的length属性。您发送的任何问题都不存在此解决方案。谢谢,但这没有帮助。我已经尝试过这种方法,即删除unique=true。我得到了相同的错误。谢谢,但这没有帮助。我已经尝试过这种方法,即删除un是的。我也犯了同样的错误。
    ,unique = true