Как сопоставить сопоставление двух внешних ключей с одним и тем же столбцом первичного ключа в Hibernate (один-к-одному)? - PullRequest
0 голосов
/ 22 апреля 2011

Я новичок в Java и Hibernate и пытаюсь отобразить следующий сценарий в Hibernate (используя аннотации).

Я имею дело со следующими двумя таблицами (относящимися к некоторым типам задач ETL).

Задачи
| -TaskId
| -SourceDatabase (от FK до таблицы Базы данных)
| -TargetDatabase (от FK до таблицы Базы данных)

Базы данных
| -DatabaseId (PK)
| -TaskId (FK к таблице задач)
| -Другие данные базы данных.

У каждой задачи есть sourceDatabase и targetDatabase. Также каждая база данных связана с только одной задачей . Как можно сопоставить эту модель в Hibernate, используя сопоставление «один к одному».

@Entity
public class Task implements Serializable
{
    @Id
    int taskId;

    //How to map  using one-to-one mapping??
    Database sourceDB;
    //how to map  using one-to-one mapping??
    Database targetDB;
}

@Entity
public class Database implements Serializable
{
    @Id
    int databaseId;

    //How to map using one-to-one mapping??
    Task task;  
}

Я удалил весь ненужный код из приведенного выше примера кода. Заранее спасибо !!

1 Ответ

2 голосов
/ 22 апреля 2011

Насколько я понимаю, у вас есть 3 отдельных отношения один к одному с соответствующими внешними ключами, поэтому вы можете отобразить их как обычные отношения один к одному:

@Entity
public class Task implements Serializable
{
...
    @OneToOne @JoinColumn(name = "SourceDatabase")
    Database sourceDB;

    @OneToOne @JoinColumn(name = "TargetDatabase")
    Database targetDB;
}

@Entity
public class Database implements Serializable
{
     ...
     @OneToOne @JoinColumn(name = "TaskId")
    Task task;  
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...