Как я еще новичок в использовании JPA (реализации: EclipseLink) и JAXB, я столкнулся с проблемой, думая о дизайне:JAXB и JPA, Отношения
У меня есть следующие настройки (упрощенно):
@XmlRootElement
@Entity
@Tabe(name="Packages")
class package {
@Id
@Column(name="p_id")
int id;
String content;
@ManyToOne(fetch = FetchType.LAZY, optional=true)
@JoinColumn(name="s_id", nullable=true, updatable=true)
Store fk_store;
}
@XmlRootElement
@Entity
@Table(name=stores")
class Store {
@Id
@Column(name="s_id")
int id;
@OneToMany (mappedBy="fk_store", fetch=FetchType.LAZY)
List<Package> packagesStored;
}
Я понял из нескольких интернет-ресурсов, мне нужно поддерживать обе стороны отношений для JPA для работы.
Таким образом, в Хранилище есть Список пакетов, Пакет содержит Магазин.
Если я сейчас создаю RESTfull Webservice и хочу отправить XML-представление пакета/хранилища, будут ли эти элементы рекурсивно внедрены друг в друга?
<package>
<store>
<packagesStored>
<package>
<store>
...
если да, то как я могу предотвратить это? Если нет, почему бы и нет? ...
Просто FYI, есть инструмент под названием hyperjaxb, который будет принимать XSD и генерировать классы с аннотациями JPA и JAXB; это может быть значительно проще, чем перенос ваших классов. http://confluence.highsource.org/display/HJ3/Home – Sbodd