Передача id от одной таблицы к другой. Hibernate

156
23 декабря 2019, 13:10

У меня есть две таблицы: customers и phoneNumbers
У одного customer может быть 1+ phoneNumbers.

Нужно ли мне добавлять OneToMany анатацию, чтобы показывать, что у customer есть несколько номеров? Если да, то как?
Немного уточню: нужно ли добавлять OneToMany, чтобы customer_id передавался от customer в phoneNumber?

Диаграма сущности:

+-------------------------------+
|            customer           |
+-------------+-------+---------+
| customer_id | name  | surname |
+-------------+-------+---------+
|           1 | Alice | Rox     |
|           2 | Bob   | Ford    |
|           3 | ...   | ...     |
+-------------+-------+---------+
+-----------------------+
|     phoneNumbers      |
+-------------+---------+
| customer_id | number  |
+-------------+---------+
|           1 | +4456.. |
|           1 | +4474.. |
|           2 | +1871.. |
+-------------+---------+

Customer.java

@Data
@Entity
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Table(name = "customers")
public class Customers {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "customer_id")
    private long id;
    private String name;
    private String surname;
}

PhoneNumbers.java

@Data
@Entity
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Table(name = "phoneNumbers")
public class PhoneNumbers {
    @Id
    @Column(name = "phone_id")
    private long id;
    private String number;
}

Update 1

PhoneNumber.java

@Data
@Entity
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Table(name = "phoneNumbers")
public class PhoneNumbers {
    @Id
    private int id;
    @ManyToOne
    @JoinColumn(name="customer_id", nullable=false)
    private Customers customers;
    private String number;
}

Customer.java

@Entity
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Table(name = "customers")
public class Customers {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "customer_id")
    private long id;
    private String name;
    private String surname;
    @OneToMany(mappedBy="customers")
    private Set<PhoneNumbers> phone_id;
}

Теперь следует правильно применить @PrimaryKeyJoinColumn
Update. Данная вещь только для One-to-One возможна

Теперь в таблице phoneNumber нужно убрать id и заменить его customer_id. Если я убераю строки в java связанные с ID, то мне выкидывает ошибку hibernate

READ ALSO
Как правильно настроить роутинг в Spring Cloud Gateway

Как правильно настроить роутинг в Spring Cloud Gateway

Пытаюсь настроить роутинг в Gateway в properties прописываю адрес и куда перенаправлять, не могу понять логику работы

138
Вывод на экран плавающего виджета

Вывод на экран плавающего виджета

Столкнулся с задачей: вывести на экран плавающий виджет, чтобы его можно было перемещать, взаимодействовать с нимВиджет НЕ для рабочего стола,...

150
for, foreach отличия? [дубликат]

for, foreach отличия? [дубликат]

Почему-то не нашел нормальной информации в интернете и погуглил по темам на стаковерфлоу, но так и не нашел в чем отличие for и for each в Java? Понятно...

151
Как настроить прогресс бар JProgressBar?

Как настроить прогресс бар JProgressBar?

Как сделать JProgressBar чтобы он работал на кнопку Jbutton и заканчивал работу после того как прогресс дошел до 100%?

195