Например, у меня есть класс User, который выглядит следующим образом:
@Entity
@Table(name = "users")
public class User{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
@NotBlank
@Size(max = 40)
@Column(name = "name")
private String name;
@NotBlank
@Size(max = 15)
@Column(name = "username")
private String username;
@NaturalId
@NotBlank
@Size(max = 40)
@Email
@Column(name = "email")
private String email;
@NotBlank
@Size(max = 100)
@Column(name = "password")
private String password;
@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(name = "user_roles",
joinColumns = @JoinColumn(name = "user_id"),
inverseJoinColumns = @JoinColumn(name = "role_id"))
private Set<Role> roles = new HashSet<>();
//Constructor
//Getters and Setters
И у меня есть класс Client:
@Entity
@Table(name = "cliente")
public class Cliente {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
@Column(name = "empresa")
private String empresa;
@Column(name = "telefono")
private Integer telefono;
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(unique = true)
private Licencia licencia;
@OneToMany(cascade = {
CascadeType.PERSIST,
CascadeType.REMOVE
} ,fetch = FetchType.EAGER)
@JoinTable(name = "user_cliente",
joinColumns = @JoinColumn(name = "cliente_id"),
inverseJoinColumns = @JoinColumn(name = "user_id"))
private Set<User> users = new HashSet<>();
public Cliente(String empresa, Integer telefono) {
this.empresa = empresa;
this.telefono = telefono;
}
//Constructor
//Getters and Setters
Теперь, что я хочу сделатьявляется классом Client, расширяющим класс User, поэтому я могу добавить Client с именем, именем пользователя, адресом электронной почты и т. д. Но мне нужны две отдельные таблицы в MySQL: одна для пользователей и ее атрибутов, а другая для клиентов только с информациейклиента, как телефон или компания. Проблема в том, что когда я расширяю класс User в классе Client, базы данных MySQL обновляются и создают поля phone, company и т. Д. В таблице User. Как я могу избежать этого?