Для контекста на стороне клиента я использую шаблон MVP, поэтому представление со списком One
знает только идентификатор, и когда мой новый Many
будет получен на сервере, я хочу иметь возможность просто обновить внешний ключ One
с помощью "setOneId" или пустой объект One
с идентификатором, установленным на желаемое значение.
Итак, я пытаюсь создать однонаправленную связь «многие к одному» в DataNucleus, и у меня немного не получается. Я могу использовать JDO или JPA, мне все равно. В JPA я пробовал это:
@Entity
public class Many {
@Id
String id;
@ManyToOne
@Join(name = "idOne")
One one;
}
@Entity
public class One {
@Id
String id;
}
Это почти то, что я хочу. Создается связь «один ко многим», но с таблицей соединений. Я хочу иметь прямое отношение. И когда я вставляю/обновляю Many
, я не хочу вставлять/обновлять связанный One
, просто обновляю idOne
с помощью хорошего идентификатора в моем объекте Many
.
Я нашел этот сообщение в блоге, но это с Hibernate, и я думаю, что он все еще использует таблицу соединений:
@Entity
public class Many {
@Id
public String id;
@Column(name="idOne")
private String idOne;
@ManyToOne
@JoinColumn(name="idOne", nullable=false, insertable=false, updatable=false)
private One one;
}
Я попробовал, но получил точно эту ошибку.
Я не понимаю, как я с этим борюсь. Моя цель - иметь таблицу, в которой хранятся некоторые справочные данные (например, список стран как класс One
) и список «рабочих элементов» (например, город как класс Many
), которые я создаю/обновляю без создания/обновления справочные данные, только его внешний ключ в объекте Many
.
@MoneyToMany
. - person Roman C   schedule 08.11.2012One
не нужно знатьMany
. - person Malexandre   schedule 08.11.2012@Join
, то это будет работать в JPA. Генератор кода сгенерирует таблицу дляMany
, в которой есть столбец, являющийся внешним ключом дляOne
. Я не узнаю аннотацию@Join
, поэтому подозреваю, что проблема именно в этом. - person Tom Anderson   schedule 08.11.2012One
также при сохраненииMany
. Я отредактирую свой вопрос, чтобы добавить еще несколько тестов. - person Malexandre   schedule 08.11.2012