首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Telosys中的ManyToMany关系不起作用

Telosys中的ManyToMany关系不起作用
EN

Stack Overflow用户
提问于 2022-08-17 14:21:38
回答 1查看 27关注 0票数 0

我试图在Telosys中建立很多到很多的关系,但它似乎不起作用。自动新模型创建(nm命令)生成以下代码(所有“一对多”关系--连接表users_roles被确认为正常表):

代码语言:javascript
复制
@DbTable(roles)

@DbCatalog(lazycat)

Roles {

// attributes

id : int { @Id @AutoIncremented @DbName(id) @DbType(INT) @NotNull @NotEmpty };

name : string { @DbName(name) @DbType(“VARCHAR(50)”) @Size(50) @MaxLen(50) };

// links

usersrolesList : UsersRoles[];

}
代码语言:javascript
复制
@DbTable(users)

@DbCatalog(lazycat)

Users {

// attributes

id : int { @Id @AutoIncremented @DbName(id) @DbType(INT) @NotNull @NotEmpty };

user : string { @DbName(user) @DbType(“VARCHAR(50)”) @Size(50) @MaxLen(50) };

password : string { @DbName(password) @DbType(“VARCHAR(50)”) @Size(50) @MaxLen(50) };

// links

usersrolesList : UsersRoles[];

}
代码语言:javascript
复制
@DbTable(usersroles)

@DbCatalog(lazycat)

UsersRoles {

// attributes

idUser : int { @DbName(iduser) @DbType(INT) @FK(FK_users, Users.id) };

idRole : int { @DbName(idrole) @DbType(INT) @FK(FK_roles, Roles.id) };

// links

roles : Roles { @LinkByFK(FKroles) };

users : Users { @LinkByFK(FK_users) };

}

下面我报告了创建表的SQL代码:

代码语言:javascript
复制
CREATE TABLE roles (

id INT(11) NOT NULL AUTO_INCREMENT,

name VARCHAR(50) NULL DEFAULT NULL COLLATE ‘utf8mb4generalci’,

PRIMARY KEY (id) USING BTREE

)

COLLATE='utf8mb4generalci'

ENGINE=InnoDB

AUTO_INCREMENT=2

;

CREATE TABLE users (

id INT(11) NOT NULL AUTO_INCREMENT,

user VARCHAR(50) NULL DEFAULT NULL COLLATE ‘utf8mb4generalci’,

password VARCHAR(50) NULL DEFAULT NULL COLLATE ‘utf8mb4generalci’,

PRIMARY KEY (id) USING BTREE

)

COLLATE='utf8mb4generalci'

ENGINE=InnoDB

AUTO_INCREMENT=2

;

CREATE TABLE users_roles (

id_user INT(11) NULL DEFAULT NULL,

id_role INT(11) NULL DEFAULT NULL,

INDEX FK__users (id_user) USING BTREE,

INDEX FK__roles (id_role) USING BTREE,

CONSTRAINT FK__roles FOREIGN KEY (id_role) REFERENCES lazycat.roles (id) ON UPDATE NO ACTION ON DELETE NO ACTION,

CONSTRAINT FK__users FOREIGN KEY (id_user) REFERENCES lazycat.users (id) ON UPDATE NO ACTION ON DELETE NO ACTION

)

COLLATE='utf8mb4generalci'

ENGINE=InnoDB

;

我能知道我哪里错了吗?

EN

回答 1

Stack Overflow用户

发布于 2022-08-17 17:59:40

你没有错,这是工具的行为。

这些链接遵循数据库中所有的FK关系。

从数据库创建的模型只是一个“原始模型”,因此您需要对其进行细化,以与您自己的期望保持一致。

该工具不能假定表是否应该被视为“连接表”,即使它只有2 FK。

也许添加一个选项来将所有这些类型的表视为事实上的“联接表”会很有趣吗?

无论如何,连接表(或“join实体”)必须存在于模型中,以便使用@ManyToMany链接中的@LinkByJoinEntity(xx)注释引用。

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

https://stackoverflow.com/questions/73390153

复制
相关文章

相似问题

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