Играть JPA Hibernate специальные двунаправленные отношения с самоопределением ManyToOne / OneToMany присоединиться к вопросу - PullRequest
2 голосов
/ 31 августа 2011

Я новичок в Play Framework, Java и Hibernate JPA, поэтому я ценю любую помощь (пришло из PHP).

Моя цель - иметь дерево категорий. По сути, это бесконечные отношения между родителями и детьми.

К каждой категории отношений должны быть прикреплены некоторые примечания, которые относятся к конкретным отношениям, а не к отдельным категориям, которые формируют отношения.

Итак, моя таблица Join / Relationship в базе данных будет выглядеть так:

| id | cat1id | cat2id | data1 | data2 | order |
| 1  | 1      | 3      | stuff | more  | 1     |
| 2  | 1      | 4      | fish  | fun   | 2     |
| 3  | 3      | 2      | ants  | whoa  | 1     |

Я пытался сделать @ManyToMany в классе Category и не мог понять, как получить дополнительные поля

Теперь я создал класс Category, в котором есть все элементы категорий и класс ClassTree с данными выше. CaaegoryTree cat1id - это @ManyToOne для категории, а CategoryTree cat2id - это @ManyToOne для категории и OneToMany для обеих категорий. По большей части все работает нормально, но не совсем правильно.

Кроме того, я хочу иметь свойство в классе Category, называемое ParentCats и ChildCats, где каждый из них является списком или набором категорий, родительским и дочерним объектом которых является этот объект Category. Конечно, я могу сделать все это с помощью функции, но, например, с помощью более нормальных отношений сущностей эту информацию так легко получить таким способом.

Будем благодарны за любые мысли, указания или толчки в правильном направлении!

1 Ответ

2 голосов
/ 31 августа 2011

Для первой части, что вы действительно хотите в ОО-смысле, это класс ассоциации.К сожалению, они не поддерживаются JPA.Проверьте эту ссылку: ManyToMany с дополнительными столбцами , что является более или менее тем, что у вас уже есть.

Для второй части вашего вопроса просто используйте самоссылающуюся двунаправленную связь:1005 *

public class Category extends Model {

    @ManyToMany(mappedBy="parentCats")
    public Set<Category> subCats; 

    @ManyToMany
    public Set<Category> parentCats; 

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