Prezados, tenho a seguinte estrutura:
ProprietarioPOJO@Entity
@Table(name = "proprietario")
public class Proprietario implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name = "idProprietario", nullable = false)
private Integer idProprietario;
@Column(name = "proprietarioNome", nullable = false)
private String proprietarioNome;
@Column(name = "numeroArrais", nullable = false)
private String numeroArrais;
@Column(name = "cpf", nullable = false)
private String cpf;
@Column(name = "telefone", nullable = false)
private String telefone;
@OneToMany(mappedBy = "proprietario", fetch = FetchType.LAZY)
@Cascade(CascadeType.ALL)
private Collection<Embarcacao> embarcacoes;
@Entity
@Table(name = "embarcacao")
@Inheritance(strategy = InheritanceType.JOINED)
public class Embarcacao implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY )
@Column(name = "idEmbarcacao", unique = true, nullable = false)
private Integer idEmbarcacao;
@Column(name = "nomeEmbarcacao")
private String nomeEmbarcacao;
@Column(name = "inscricaoEmbarcacao")
private String inscricaoEmbarcacao;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "idProprietario", insertable = true, updatable = true)
@Fetch(FetchMode.JOIN)
@Cascade(CascadeType.SAVE_UPDATE)
private Proprietario proprietario;
@Entity
@Table(name = "jetski")
@PrimaryKeyJoinColumn(name = "idEmbarcacao")
public class JetSki extends Embarcacao {
private static final long serialVersionUID = 1L;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "embarcacao_idEmbarcacao")
private Embarcacao embarcacao;
@Column(name = "jetComprimento")
private String jetComprimento;
@Column(name = "jetPotenciaMotor")
private String jetPotenciaMotor;
@Column(name = "jetAno")
private String jetAno;
@Column(name = "jetQuantidadePessoas")
private String jetQuantidadePessoas;
@Column(name = "jetModelo")
private String jetModelo;
@Column(name = "jetMarca")
private String jetMarca;
@Column(name = "jetTipoMotor")
private String jetTipoMotor;
Estou conseguindo perssitir em todas as tabelas, porem com essas restriçoes:
1) Insiro uma embarcacao e seto ela no jetski junto com os outros atributos do jetski, porem quando faz o insert na tabela jetski ele faz outro insert na tabela embarcacao com um novo ID.
2) Quando delete um jetski, ele deleta junto a embarcaçao e o proprietario, o certo era so deletar a embarcaçao.