powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / JPA2 в одном Entity 2 ссылки на другое Entity?
13 сообщений из 13, страница 1 из 1
JPA2 в одном Entity 2 ссылки на другое Entity?
    #37914884
alex2808
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет.

Есть сущность TaskEntity, в котором есть 2 свойства:
private PersonEntity idSender;
private PersonEntity idRecipient;

Обе переменных ссылаются на объект PersonEntity связаны с ним отношением один-ко-многим.

Обычно, если у меня одна связь один ко многим, я пишу в PersonEntity:

private Collection<TaskEntity> tasks;
@OneToMany(cascade=ALL, mappedBy="persons")
public Collection<TaskEntity> getTasks() {
return tasks;
}

public void setTasks(Collection<TaskEntity> tasks) {
this.tasks = tasks;
}

А в TaskEntity:

private PersonEntity persons;

@ManyToOne
public PersonEntity getPersons() {
return persons;
}

public void setPersons(PersonEntity persons) {
this.persons = persons;
}

Ну а если у меня в TaskEntity существует 2 свойства с ссылкой на PersonEntity, как в этом случае задать связь?
...
Рейтинг: 0 / 0
JPA2 в одном Entity 2 ссылки на другое Entity?
    #37914894
alex2808
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Корректно ли будет, если я в PersonEntity создам 2 коллекции Collection<TaskEntity>, каждая из которых будет через mappedBy="Нужный_persons"
связана с конкретным свойством PersonEntity, например

private Collection<TaskEntity> tasksSender;
private Collection<TaskEntity> tasksRecipient;

@OneToMany(cascade=ALL, mappedBy="personsSender")
public Collection<TaskEntity> getTasksSender() {
return tasksSender;
}

@OneToMany(cascade=ALL, mappedBy="personsRecipient")
public Collection<TaskEntity> getTasksRecipient() {
return tasksRecipient;
}

?
...
Рейтинг: 0 / 0
JPA2 в одном Entity 2 ссылки на другое Entity?
    #37914903
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: java
1.
2.
3.
4.
5.
6.
    @ManyToOne
    @JoinColumn(name = "fk_sender")


    @ManyToOne
    @JoinColumn(name = "fk_recipient")
...
Рейтинг: 0 / 0
JPA2 в одном Entity 2 ссылки на другое Entity?
    #37914930
alex2808
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz
Код: java
1.
2.
3.
4.
5.
6.
    @ManyToOne
    @JoinColumn(name = "fk_sender")


    @ManyToOne
    @JoinColumn(name = "fk_recipient")



Т.е. это будет выглядеть так?

PersonEntity
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
private Collection<TaskEntity> tasksSender;
private Collection<TaskEntity> tasksRecipient;

@OneToMany(cascade=ALL, mappedBy="personsSender")
public Collection<TaskEntity> getTasksSender() {
return tasksSender;
} 

@OneToMany(cascade=ALL, mappedBy="personsRecipient")
public Collection<TaskEntity> getTasksRecipient() {
return tasksRecipient;
} 



TaskEntity
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
@ManyToOne
@JoinColumn(name = "tasksSender")
public PersonEntity getPersonsSender() {
return personsSender;
}

@ManyToOne
@JoinColumn(name = "tasksRecipient")
public PersonEntity getPersonsRecipient() {
return personsRecipient;
}


?
...
Рейтинг: 0 / 0
JPA2 в одном Entity 2 ссылки на другое Entity?
    #37914946
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex2808,
каскад не будет работать.
Либо у вас отношения Матер-детайль с одним хозяином и каскадом.
Либо FK и тогда Мастер становится обычным справочником.
Т.е. 2 FK справочника без каскада.
...
Рейтинг: 0 / 0
JPA2 в одном Entity 2 ссылки на другое Entity?
    #37914957
alex2808
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или в @JoinColumn(name="полеБД") нужно задавать имя поля БД (например SENDER_ID или RECIEVER_ID) таблицы TASK и является внешним ключом к полю ID таблицы PERSON?
...
Рейтинг: 0 / 0
JPA2 в одном Entity 2 ссылки на другое Entity?
    #37914962
alex2808
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

Ну а если вместо

Код: java
1.
@OneToMany(cascade=ALL, mappedBy="personsRecipient")



поставить
Код: java
1.
@OneToMany(mappedBy="personsRecipient")


и
Код: java
1.
@OneToMany(mappedBy="personsSender")


то все будет правильно?
...
Рейтинг: 0 / 0
JPA2 в одном Entity 2 ссылки на другое Entity?
    #37914966
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex2808,

Код: java
1.
2.
3.
4.
public class Book {
	 @OneToMany
	 @JoinColumn(name= "id_book")//добавит поле в ТУ таблу и FK
	 private List<Comment> comments;


даст в БД
--------------------
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
 create table Book (
        id  bigserial not null,
        Name varchar(255) not null,
        primary key (id)
    )

    create table Comment (
        id  bigserial not null,
        MyName varchar(255) not null,
        id_book int8,
        primary key (id)
    )

    alter table Comment 
        add constraint FK9BDE863FC1BFAF72 
        foreign key (id_book) 
        references Book
...
Рейтинг: 0 / 0
JPA2 в одном Entity 2 ссылки на другое Entity?
    #37914986
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex2808,

вопрос интересный

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
public class Book {
	 @OneToMany
	 @JoinColumn(name= "id_book")//добавит поле в ТУ таблу и FK
	 private List<Comment> comments;

	 @OneToMany
	 @JoinColumn(name= "id_book2")//добавит ЕЩЁ поле в ТУ таблу и FK
	 private List<Comment> comments;


проверь)
...
Рейтинг: 0 / 0
JPA2 в одном Entity 2 ссылки на другое Entity?
    #37915021
Фотография dmitriyche
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТС,

Ваша задача очень похожа на твиттеровских followers/following.
Её можно решить добавив промежуточную сущность для связи многие ко многим.
...
Рейтинг: 0 / 0
JPA2 в одном Entity 2 ссылки на другое Entity?
    #37915177
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У него кусок задачи. Зачем ему 2 поля в одной таблице для Идишников одной сущности я не понял.
...
Рейтинг: 0 / 0
JPA2 в одном Entity 2 ссылки на другое Entity?
    #37915237
alex2808
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123У него кусок задачи. Зачем ему 2 поля в одной таблице для Идишников одной сущности я не понял.
Есть задача Task.
Есть человек, который ее ставит.
А есть исполнитель задачи.
Оба они объекты Person - сотрудники.

Или вы предлагаете отдельно для постановщиков задачи делать таблицу и для ее исполнителей?
...
Рейтинг: 0 / 0
JPA2 в одном Entity 2 ссылки на другое Entity?
    #37915433
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex2808,
да, как раз твой случай - 2 FK.
Получилось?
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / JPA2 в одном Entity 2 ссылки на другое Entity?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]