2013-11-06 3 views
2

Как я еще новичок в использовании 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> 
... 

если да, то как я могу предотвратить это? Если нет, почему бы и нет? ...

+0

Просто FYI, есть инструмент под названием hyperjaxb, который будет принимать XSD и генерировать классы с аннотациями JPA и JAXB; это может быть значительно проще, чем перенос ваших классов. http://confluence.highsource.org/display/HJ3/Home – Sbodd

ответ

0

Примечание: Я EclipseLink JAXB (MOXy) свинца и член группы экспертов JAXB (JSR-222).

Если вы также можете использовать EclipseLink в качестве поставщика JAXB, то вы можете использовать расширение @XmlInverseReference для отображения направления отношений:

Смежные вопросы