Как настроить промежуточную таблицу в MySQL для отношений ManyToMany в squeryl для платформы Play 2?

1

Я все еще изучаю все возможности веб-разработки, scala, play 2.0 и squeryl, и я пытаюсь настроить отношение ManyToMany между двумя моими таблицами.

Я просмотрел информацию, найденную здесь, но у меня проблемы с промежуточной таблицей. Я посмотрел повсюду, и я не могу найти хороший пример того, как он должен быть структурирован.

Я использую MySQL для своей базы данных, и я пытался использовать внешние ключи и первичные ключи в промежуточной таблице, но ни один из них не работал, или, может быть, я просто делаю это неправильно. Итак, может ли кто-нибудь дать мне ясный пример того, как должна выглядеть промежуточная таблица?

Для получения дополнительной информации основная структура двух таблиц, которые я хочу рассказать, состоит в следующем.

tableOne (
  name varchar(255)
);

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

Они будут связаны именем в tableOne и idCode в таблицеTwo, которая является только сокращенной формой столбца tableTwo.

Поэтому, используя MySQL, squeryl и формат, показанный в ссылке, может ли кто-нибудь помочь мне добиться этого?

Теги:
many-to-many
playframework-2.0
squeryl

1 ответ

3
Лучший ответ

Чтобы связать две таблицы, вам необходимо установить отношения ManyToMany в вашей схеме. Предполагая, что вы определили свои таблицы с именами tableOne и tableTwo в своей схеме, что-то вроде этого, вероятно, то, что вы хотите:

Сначала создайте класс, который объединяет две таблицы:

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)) 

Тогда вам просто нужно создать соответствующую таблицу в вашей БД, которая должна иметь два поля - name, id_code (названный в соответствии с вашим соглашением об именах).

Если вам нужна ссылка, это должно указывать вам в правильном направлении: http://squeryl.org/relations.html

  • 0
    Это намного проще, чем я хотел, большое спасибо!
  • 0
    Добро пожаловать. Если это решило проблему, не стесняйтесь принять ответ. Если есть другие вопросы, просто спросите.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню