Различают владение и обратную сторону отношений JPA без "mappedBy" - PullRequest
2 голосов
/ 09 января 2012

У меня проблема с JPA / Hibernate и отображением @OneToMany вместе с @OrderColumn.И я обнаружил, что это, вероятно, проблема отсутствующего различия между «владельцем» и «обратной» стороной отношений.

Но Hibernate не поддерживает следующую комбинацию

@OneToMany(mappedBy="...")
@OrderColumn(...)

Как я могу сказать JPA / Hibernate, какая сторона является владельцем?

Я пробовал с

@OneToMany
@OrderColumn(...)
@JoinTable(name="...")

, но это не помогло.

Кажется, это Ошибка Hibernate (пробовал Hibernate 3.6.1и 3.6.9).Поддерживается ли комбинация mappedBy и @OrderColumn другим провайдером JPA, таким как EclipseLink?

Ответы [ 2 ]

2 голосов
/ 09 января 2012

В ответ на изменение вопроса такая комбинация поддерживается DataNucleus JPA согласно http://www.datanucleus.org/products/accessplatform_3_0/jpa/orm/one_to_many_list.html#join_bi просто замените @OrderId в этом примере на @ OrderColumn

0 голосов
/ 11 января 2012

В конце концов я нашел обходной путь для помещения position в класс (Task), чьи объекты следует упорядочить.

@Entity
public class TaskList extends GenericModel {

  @OneToMany(mappedBy="taskList", cascade=CascadeType.ALL, orphanRemoval=true)
  @OrderBy("position")
  public List<Task> tasks = new ArrayList<>();

  public void addTask(int position, task) {
    task.taskList = this;
    tasks.add(position, task);
    updatePositions();
  }

  private void updatePositions() {
    int position = 0;
    for(Whish whish : whishes)
      whish.setPosition(position++);
  }
}

Возможно, в этом случае другие провайдеры JPA справляются лучше, но сейчас я должен придерживаться Hibernate.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...