Olás,
para ilustrar minha pergunta vou colocar meu código:
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
public class User implements Serializable {
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column
private String email;
@Column(name = "hashed_password")
private String password;
@Column(name = "account_status")
private boolean accountStatus = true;
@ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinTable(name = "users_has_roles",
joinColumns = @JoinColumn(name = "users_id", nullable = false),
inverseJoinColumns = @JoinColumn(name = "roles_id", nullable = false))
private Set<Role> roles = new HashSet<Role>();
//getters and setters
}
Classe que extends a User
@Entity
@PrimaryKeyJoinColumn(name="user_id")
public class Person extends User {
@Column(name = "name", nullable = false)
private String name;
@Column(name="gender", nullable = false)
private String gender = "m";
@Column(name="birthday")
@Temporal(TemporalType.DATE)
private Date birthday;
@Column
@Length(min = 8, message = "#{messages['validator.zipcode.short']}")
private String zipcode;
@Column
@Length(min = 3, message = "#{messages['validator.street.short']}")
@NotEmpty
private String street;
@Column
private String number;
@Column
private String complement;
//getters and setters
}
E as permissões ficam em outra tabela:
@Entity
@Table(name = "roles")
public class Role implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Column
private String name;
//getters and setters
}
Meu problema é quando eu crio um objeto Person todo preenchido, adiciono uma Role valida nele ele não persiste os dados na minha tabela de join users_has_roles.
Mas eu preencher na mão a table de Join ele tras os dados certinho do banco.
Minha dúvida é por herança as anotações de User não são herdadas então?