Anotações para Herança

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?

up… alguém???

Boa noite caros,
tenta fazer essa pequena alteração e veja se funciona

@JoinTable(name = "users_has_roles",  
                 joinColumns = @JoinColumn(name = "users_id", nullable = false, referencedColumnName = "id"),  
                 inverseJoinColumns = @JoinColumn(name = "roles_id", nullable = false, referencedColumnName = "id"))

Olá edsonregis adicionei conforme vc falou mas continua sem funcionar.

Alguém tem mais alguma alternativa?

Obrigado

Olá pessoal,

depois de muito quebrar a cabeça descubri que o problema não era com o hibernate e sim com a conversation do Jboss Seam.
Por algum motivo ele não terminava a conversation corretamente e não salvava os dados.

Obrigado

deveria ter um DescriminatorValue na tabela filha de User