Предполагая, что у вас есть две таблицы, Person
и Person_Friends
. Person
класс выглядит, как показано ниже:
ПРИМЕЧАНИЕ: Для того, чтобы сохранить его простым, я использовал IDENTITY
в GenerationType
и int
как тип данных для id
.
@Entity
class Person
{
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int id;
@OneToMany(cascade=CascadeType.ALL)
@JoinTable(name="Person_Friends")
List<Person> friends = new ArrayList<>();
@Override
public String toString() {
return "Person [id=" + id + ", friends=" + friends + "]";
}
}
Код для сохранения образца Person
объекта с friends
:
entityManager.getTransaction().begin();
Person p = new Person();
p.friends.add(new Person());
p.friends.add(new Person());
p.friends.add(new Person());
p.friends.add(new Person());
entityManager.persist(p);
entityManager.getTransaction().commit();
не в состоянии выяснить, как данные друг на самом деле получить хранящуюся?
С помощью этой схемы вы сможете найти данные для друзей в таблице Person_Friends
.
Если да, то как получить к нему доступ?
Загрузка Person
объекта, для которого вы хотите просмотреть друг данные должны заполнить friends
список, а хотя лениво для этого отображения.
В случае, если вы хотите увидеть таблицы автоматически сгенерированные, используемые здесь, в DDLS ниже:
create table Person (
id integer generated by default as identity,
primary key (id)
)
create table Person_Friends (
Person_id integer not null,
friends_id integer not null
)
alter table Person_Friends
add constraint UK_4ehyhs34ebu5gl6k8u5ckd2u7 unique (friends_id)
alter table Person_Friends
add constraint FKjvrny03ut8h70garyw5ehnlr7
foreign key (friends_id)
references Person
alter table Person_Friends
add constraint FK85ngln3801hk33fkhhsl7b8e7
foreign key (Person_id)
references Person
mappedBy, как предполагается, чтобы указать на поле другого типа типа лица. Это не так. Предложите, чтобы вы пошли и прочитали документацию JPA. –
Спасибо, что указали это :-) Учитывая ваш глубокий «опыт» в JPA, вы могли бы сообщить мне, как отображать вышеуказанное отношение? Заранее спасибо ! –
Вам посоветовали посмотреть документацию JPA. Любая документация JPA расскажет вам, как сопоставить двунаправленное отношение 1-N. Например, http://www.datanucleus.org/products/accessplatform_4_2/jpa/orm/one_to_many_collection.html#fk_bi Почему так трудно найти? –