В упрощенной ситуации, как этот, с 3-х классов:Hibernate аннотации N ---- N отношений с ассоциированными данными в отношении
class ClassONE{
protected List<IntermediatedClass>;
(... getters/setters)
}
class ClassTWO
protected String someData;
(... getters/setters/iniciate List etc...)
}
class IntermediatedClass{
public ClassONE one; //Points to an object (row) of ClassONE
public ClassTWO two; //Points to an object (row) of classTWO.
public Double data; //Data that need being saved with this particular relation between obj1 and obj2.
}
Я знаю, что с Hibernate вы можете объявить ManyToMany мононаправленных отношения между class1 и class2. Класс1 может иметь некоторые объекты класса2, а class2 может быть на некоторых объектах класса 1. Это просто [CLASS1] N ---- N [CLASS2].
Я хочу объявить обычную реализацию базы данных N-N [CLASS1] 1 --- N [INTERMEDIATECLASS] N --- 1 [CLASS2]. Промежуточный класс имеет атрибут очень важный: данные, тип Double. Я не могу найти способ объявить IntermediateClass своим способом реализовать этот N - N с этими данными в Hibernate Annotations.
Любая помощь, пожалуйста? Просто с этим простым примером я могу решить свою проблему. Я не сделал бы свои попытки на этом, чтобы поддерживать чистый код для вашего понимания.
Я постараюсь с целым рядом концентрированных классов класса AB. Просто вопрос: почему вы определили аннотации выше метода геттера, а не над атрибутами? Я видел, что в документации Hibernate они так делают, и я объявляю аннотации над атрибутами. Некоторые советы по этому поводу? – Raph
Вы можете определять аннотации либо по полям, либо по геттерам, это зависит от вас. Но я думаю, вы должны придерживаться одного или другого соглашения в иерархии классов. Если вы определяете аннотацию '@ Id' в поле, вы должны определить все аннотации в полях. Если вы определяете '@ Id' на геттере, это все геттеры. Также имейте в виду, что вам нужен сеттер (который может быть закрыт, хотя), если вы аннотируете геттеры. Только если вы добавляете '@AccessType (" field ")' в getter, то вам не нужен сеттер. – tscho
Вкратце, я должен вручную определить [A] 1 --- N [AB] N --- 1 [B] с аннотациями в классе AB. Да, это лучший способ. Я думал, что мне удалось определить всю эту структуру в наборе параметров @ManyToMany. спасибо – Raph