1

私はまだ Web 開発、scala、play 2.0、および squeryl の詳細をすべて学んでおり、2 つのテーブル間に ManyToMany 関係を設定しようとしています。

ここにある情報を調べましたが、中間テーブルに問題があります。私はすべてを見てきましたが、それがどのように構成されるべきかの良い例を見つけることができません.

データベースに MySQL を使用しており、中間テーブルで外部キーと主キーを使用しようとしましたが、どちらも機能しなかったか、間違っている可能性があります。それで、誰かが中間テーブルがどのように見えるべきかの明確な例を教えてもらえますか?

もう少し詳しく説明すると、関連付けたい 2 つのテーブルの基本構造は次のとおりです。

tableOne (
  name varchar(255)
);

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

これらは、tableOne の名前と、tableTwo の name 列の省略形である tableTwo の idCode によって関連付けられます。

MySQL、squeryl、およびリンクに示されている形式を使用して、誰でもこれを進めるのを手伝ってもらえますか?

4

1 に答える 1

3

2 つのテーブルを関連付けるには、スキーマで ManyToMany 関係を確立する必要があります。スキーマで tableOne と tableTwo という名前でテーブルを定義したと仮定すると、おそらく次のようなものが必要になります。

まず、2 つのテーブルを結合するクラスを作成します。

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

次に、スキーマでリレーションをマップします

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

次に、DB に対応するテーブルを作成するだけで済みます。これには 2 つのフィールドが必要nameですid_code(命名規則に従って名前が付けられます)。

参照が必要な場合は、これが正しい方向を示しているはずです: http://squeryl.org/relations.html

于 2012-12-27T17:20:27.773 に答える