Я все еще изучаю все возможности веб-разработки, scala, play 2.0 и squeryl, и я пытаюсь настроить отношение ManyToMany между двумя моими таблицами.
Я просмотрел информацию, найденную здесь, но у меня проблемы с промежуточной таблицей. Я посмотрел повсюду, и я не могу найти хороший пример того, как он должен быть структурирован.
Я использую MySQL для своей базы данных, и я пытался использовать внешние ключи и первичные ключи в промежуточной таблице, но ни один из них не работал, или, может быть, я просто делаю это неправильно. Итак, может ли кто-нибудь дать мне ясный пример того, как должна выглядеть промежуточная таблица?
Для получения дополнительной информации основная структура двух таблиц, которые я хочу рассказать, состоит в следующем.
tableOne (
name varchar(255)
);
tableTwo (
name varchar(255),
idCode varchar(255)
);
Они будут связаны именем в tableOne и idCode в таблицеTwo, которая является только сокращенной формой столбца tableTwo.
Поэтому, используя MySQL, squeryl и формат, показанный в ссылке, может ли кто-нибудь помочь мне добиться этого?
Чтобы связать две таблицы, вам необходимо установить отношения 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