java - Spring boot中的复合键超过16列

标签 java mysql spring spring-data-jpa

我使用过 MySQL、Spring Boot 和 JPA 。我想生成一个表,该表在 Dto 类的 18 列上具有复合主值。类中共有 40 个变量/列

CompositeKeys.java

public class CompositeKeys implements Serializable {
    private int column1;
    private String column2;
            .
            .
            .
    private int column18;

Domain.java

@IdClass(CompositeKeys.class)
@Table(name = "table")
public class Domain implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int column1;
    @Id
    private int column2;
            .
            .
            .
     @Id
     private int column18;
     private String column40;

Error Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Too many key parts specified; max 16 parts allowed at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:na]

请指导我如何解决这个问题。如果我在 SQL Server 上手动创建表并使用查询创建表,它将允许我创建这个 .我想使用域创建表

最佳答案

MySQL 不支持键中超过 16 列(在 https://dev.mysql.com/doc/refman/8.0/en/multiple-column-indexes.html 中搜索“索引最多可以包含 16 列”)。
因此 MySQL 不可能实现

关于java - Spring boot中的复合键超过16列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58941880/

相关文章:

hibernate - 在带有 jpa/hibernate 的 Spring 中,如何保持 session 打开以避免延迟初始化异常?

java - 使用 Spring Data 和 HIbernate JPA 进行延迟加载

mysql - 从其他机器连接到 MySQL

MySql 如何获取聊天记录显示在聊天列表中

spring - 把阻塞代码包装成一个Mono flatMap,这还是非阻塞操作吗?

Eclipse-未找到 JDK

java - 正则表达式:Eclipse 中的转义模式,与之前的单词不匹配

java - 网络抓取器

java - 在 Java 中将 ArrayList 插入到 mongoDB

mysql - MySQL 中的多表 SQL 连接