ORMLite внешнее ограничение, которое не связано с PK - PullRequest
0 голосов
/ 26 февраля 2012

В ORMLite, как я могу определить ограничение (чужое) для другой таблицы, которая связана не с целочисленным идентификатором, а с любым другим полем, например полем varchar / string, которое не является PK.

Например, ссылаясь на пример кода ORMLite, где сущность 'order' связана с сущностью 'account'.В этом примере заказ связан с учетной записью по столбцу идентификатора (по-моему, по умолчанию), который представляет собой PK.

Вместо того, чтобы устанавливать ограничение от 'order.account_id' достолбец «account.id», как я могу настроить его из столбца «order.account_name» в столбец «account.name»? Я искал что-то вроде аннотации foreignColumnName, но, к сожалению, его не существует, для отношения один-к-одному.

Вот код Java примеров ORMLite:

Не удалось найти информацию в документации .

(причина, по которой мне это нужно, в том, что у меня есть существующая база данных, не созданная ORMLite автоматически, которая, очевидно, не была должным образом настроена и не нормализована на полпути, но мне нужно работать с этим существующим, включая его существующие имена столбцов иограничения.)

1 Ответ

1 голос
/ 27 февраля 2012

Я искал что-то вроде аннотации foreignColumnName, но, к сожалению, его не существует для отношений один-к-одному.

Edit:

Эта функция была добавлена ​​в ORMLite в версии 4.36. Концепция иностранных объектов была новой конструкцией в то время. Смотрите javadocs на поле здесь . Цитировать:

public abstract String foreignColumnName

Имя поля стороннего объекта, связанного с этой таблицей. Это не нужно указывать, если вы используете идентификатор стороннего объекта, который рекомендуется. Например, если у вас есть объект «Заказ» с иностранной Учетной записью, вы можете отключить имя Учетной записи вместо идентификатора Учетной записи.

ПРИМЕЧАНИЕ: Установка этого значения подразумевает, что foreignAutoRefresh() также имеет значение true, поскольку нет способа обновить объект, поскольку поле id не сохраняется в базе данных. Поэтому, если это установлено, поле будет автоматически обновляться в другом запросе к базе данных.

...