UNSUPPORTED_PK_TYPE

image
大佬们,Mysql gennerate from database 是不支持主键吗

头一回见,你能看看 test_itd_area 这个表目前都有哪些主键吗?

SELECT
  t.TABLE_NAME,
  t.CONSTRAINT_TYPE,
  c.COLUMN_NAME,
  c.ORDINAL_POSITION
FROM
  INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS t,
  INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS c

WHERE
  t.TABLE_NAME = c.TABLE_NAME
  AND t.TABLE_SCHEMA = c.TABLE_SCHEMA
  AND t.TABLE_NAME = 'test_itd_area'
  AND t.TABLE_SCHEMA= '<你的schema>' // 需要替换成 test_itd_area 的 schema名称,小写。
  AND t.CONSTRAINT_TYPE = 'PRIMARY KEY';

是不是因为decimal类型的

不确定,我们刚发给Studio团队了,让他们看看先。

好的,辛苦

最好你能执行一下上面那个sql,看看这个表的主键都是什么类型的字段

image

这个字段的类型是decimal?

是的。

能发一下这个字段的DDL吗?decimal怎么定义的

CREATE TABLE test_itd_area (
FD_ID char(36) NOT NULL,
FD_CODE varchar(50) DEFAULT NULL,
FD_NAME varchar(100) DEFAULT NULL,
FD_LEVEL varchar(64) DEFAULT NULL,
PRIMARY KEY (FD_ID)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;

ddl里面,则个 FD_ID 是 char,怎么说是decimal呢?

CREATE TABLE itd_area (
fd_id decimal(64,16) NOT NULL COMMENT ‘编号’,
fd_code varchar(50) NOT NULL COMMENT ‘编码’,
fd_name varchar(100) NOT NULL COMMENT ‘名称’,
PRIMARY KEY (fd_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

抱歉,发错了

好的,我们发给Studio团队看看,应该是 decimal(64,16) 的问题。

目前Jmix支持的有 Number, string, UUID 类型,以及这些类型的组合。

好的,感谢,这个主键类型设计的也确实不太正常,这个我们后期使用可以更改

确认了是decimal带小数的问题。可以手动修改映射的实体:

@DdlGeneration(value = DdlGeneration.DbScriptGenerationMode.DISABLED)
@JmixEntity
@Store(name = "itd")
@Table(name = "itd_area")
@Entity
public class Area {
    @Column(name = "fd_id", nullable = false, precision = 64, scale = 16)
    @Id
    private BigDecimal id;