Я новичок в структуре отношений с базой данных. И у меня есть некоторые проблемы с этим. Моя база данных имеет такую структуру (см. Img)
Я хочу организовать свой CRUD для этих таблиц с помощью Hibernate. Я установил для них «One-To-One».
В моем проекте возникает ситуация, когда я хочу обновить только одну таблицу, иногда только одно поле в одной таблице. Я управлял только родительской таблицей, и у меня была проблема с обновлением childs. Я изменил позицию внешнего ключа с «utilisateur» на «utilisateur_details», но я не уверен, что это хорошая идея.
Я использовал отражение для получения всех полей и их повторного запуска. Но было невозможно l oop для всех полей во всех этих таблицах, чтобы знать, какое из полей будет обновлено.
Например: у меня есть строки в "compte". У меня есть данные в "utilisateur_details". И я хочу изменить «first_name» в «utilisateur_details» и добавить данные в таблицы «ville» и «departement». Рекомендуется ли иметь ResControllers для всех таблиц для управления каждой таблицей с каждым контроллером, или мне нужен только один контроллер для родительской таблицы, и я могу управлять другими таблицами с этой.
Итак, я разместил здесь свои сущности. Я использую Spring Boot и Rest API.
@Entity
@Table(name = "utilisateur", schema = "vshop_schema")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private int id;
@Column(name = "adresse_ip")
private int adressIP;
@OneToMany(cascade = {CascadeType.DETACH, CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH}, mappedBy = "user")
private Set<Annonce> annonces;
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "compte_id")
private Account account;
@OneToOne(mappedBy = "user", cascade = CascadeType.ALL,
fetch = FetchType.LAZY, optional = false)
private UserDetails userDetails;
public User() {
}
getters and setters
}
@Entity
@Table(name = "compte", schema = "vshop_schema")
@DynamicUpdate
public class Account {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private int id;
@Column(name = "email")
private String email;
@Column(name = "pass")
private String password;
public Account() {
}
getters and setters
}
@Entity
@Table(name = "utilisateur_details", schema = "vshop_schema")
@DynamicUpdate
public class UserDetails {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private int id;
@Column(name = "first_name")
private String firstName;
@Column(name = "last_name")
private String lastName;
@Column(name = "dob")
@JsonFormat(pattern="dd/MM/yyyy")
private Date dob;
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "ville_id")
private Ville ville;
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "utilisateur_id")
private User user;
public UserDetails() {
}
getters and setters
}
Для DAO я использую стандартную систему DAO для операций CRUD.