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

标签 mysql scala many-to-many playframework-2.0 squeryl

我仍在学习 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/

相关文章:

php - 以 HTML 形式返回 PHP/MySQL 结果以供编辑

php - MYSQL 在模态中选择 ID

python - 哪种 DBDriver 适用于 Python3x 和 SQLAlchemy0.8 for MySQL?

scala - 协变类型 A 出现在值 a 的类型 A 中的逆变位置

node.js - sails.js 多对多查询

python - 如何查询多对多关系中的空记录

php - 存储 session 变量时出现问题

scala - 为什么 Scala Future 在映射到迭代器时顺序运行

scala - 如何将带星号的参数传递给下一个方法?

php - 如何在 MySQL 中更新或插入具有多对多关系的行