gpt4 book ai didi

mysql - 如何在 MySQL 中为 Play 2 框架的 squeryl 中的 ManyToMany 关系设置中间表?

转载 作者:行者123 更新时间:2023-11-29 05:31:50 26 4
gpt4 key购买 nike

我仍在学习 Web 开发、scala、play 2.0 和 squeryl 的所有来龙去脉,我正在尝试在我的两个表之间建立 ManyToMany 关系。

我查看了资料发现here但是我在中间表上遇到了麻烦。我已经查看了所有内容,但找不到一个很好的例子来说明它应该如何构建。

我在我的数据库中使用 MySQL,我尝试在中间表中使用外键和主键,但都没有用,或者我只是做错了。那么,有人可以给我一个中间表应该是什么样子的清晰示例吗?

再多说一点,我要关联的两个表的基本结构如下。

tableOne (
name varchar(255)
);

tableTwo (
name varchar(255),
idCode varchar(255)
);

它们将通过 tableOne 中的名称和 tableTwo 中的 idCode 相关联,这只是 tableTwo 名称列的缩写形式。

那么使用 MySQL、squeryl 和链接中显示的格式,任何人都可以帮助我实现这一目标吗?

最佳答案

要关联这两个表,您需要在您的架构中建立多对多关系。假设您已经在您的模式中使用名称 tableOne 和 tableTwo 定义了您的表,这样的东西可能是您想要的:

首先创建一个连接两个表的类:

class TableOneToTwo(
name:String = "",
idCode:String = "") extends KeyedEntity[CompositeKey2[String, String]] {
def id = compositeKey(name, idCode)
}

然后在你的 Schema 中映射关系

val tableOneToTwo = manyToManyRelation(tableOne, tableTwo).via[TableOneToTwo]((t1, t2, jt) => (t1.name === jt.name, t2.idCode === jt.idCode)) 

然后您只需要在您的数据库中创建相应的表 - 它应该有两个字段 - nameid_code(根据您的命名约定命名)。

如果您需要引用,这应该为您指明正确的方向:http://squeryl.org/relations.html

关于mysql - 如何在 MySQL 中为 Play 2 框架的 squeryl 中的 ManyToMany 关系设置中间表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14051190/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com