ORMLite чужой @DatabaseField с обратным отображением? - PullRequest
1 голос
/ 07 июня 2011

Я реализую небольшой проект, и мне интересно, поддерживает ли ORMLite обратное отображение для @DatabaseMapping s.То, что я ищу, - это похоже на обратное отображение JPA / Hibernates.Следующий, гипотетический и довольно глупый пример, таблица BlogPost:

@DatabaseTable
public class BlogPost {
  @DatabaseField(foreign = true)
  private Author owner;
}

и соответствующий класс Author, не очень важно:

@DatabaseTable public class Author { }

Это приводит к следующемуSQL (только соответствующие части):

CREATE TABLE blogpost ( ... , owner_id INTEGER NOT NULL, ... ) CREATE TABLE author ( ... )

Посмотрите, как таблица blogpost теперь имеет внешний ключ для автора.Однако я предпочел бы это наоборот, то есть у автора должен быть внешний ключ blogpost_id.(Я же говорил, это был глупый пример ...;).

С обратным отображением я мог бы использовать каскады для удалений, но я не нашел ничего в документации ORMlite по этому поводу.Это не особенность или я просто что-то упустил?

1 Ответ

1 голос
/ 02 августа 2011

Меня немного смущает вопрос, но я все равно решил ответить на него.

Я не понимаю, как это будет работать @ilikeorangutans. Я предполагаю, что есть несколько блогов для одного автора? Так как же может быть один blogpost_id на канале аккаунта? Вы можете иметь таблицу соединений, которая содержит author_id и blogpost_id, но это только добавляет сложности.

Если вы посмотрите на это обсуждение и эту веб-страницу , вы увидите, что обратное отображение Hibernate касается того, кто контролирует отношения и отвечает за обновление строк. В обоих случаях BlogPost будет иметь author_id, а не наоборот.

ORMLite поддерживает поддержку концепции «чужих коллекций», где вы можете добавить BlogPost в базу данных, добавив его в коллекцию в объекте Author. Для получения дополнительной информации см. документацию по иностранным коллекциям .

Извините, если я что-то упустил.

...