Prezados, eu tenho um sistema onde tenho uma classe Embarcacao e Proprietario, onde as duas se relacionam, de forme que na tabela Embarcacao costa uma fk(idproprietario)
Embarcacao POJO
package br.ucb.pojo;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.DiscriminatorColumn;
import javax.persistence.DiscriminatorType;
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;
import org.hibernate.annotations.ForeignKey;
import org.hibernate.annotations.IndexColumn;
@Entity
@Table(name = "embarcacao")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "tipoEmbarcacao", discriminatorType = DiscriminatorType.INTEGER)
@DiscriminatorValue("0")
public class Embarcacao implements Serializable {
private static final long serialVersionUID = 1L;
@IndexColumn(name = "idEmbarcacao_UNIQUE")
@Id
@Column(name = "idEmbarcacao", nullable = false)
private Integer idEmbarcacao;
@Column(name = "nomeEmbarcacao", nullable = false)
private String nomeEmbarcacao;
@Column(name = "inscricaoEmbarcacao", nullable = false)
private String inscricaoEmbarcacao;
@IndexColumn(name = "FK_PROPRIETARIO")
@ForeignKey(name = "FK_PROPRIETARIO")
@ManyToOne
@JoinColumn(name = "proprietario_idProprietario")
@Fetch(FetchMode.JOIN)
public Proprietario proprietario;
//public Embarcacao() {
//this.nomeEmbarcacao = null;
//this.inscricaoEmbarcacao = null;
//this.idEmbarcacao = null;
//this.proprietario = new Proprietario();
//}
@Override
public String toString() {
return "Embarcacao [idEmbarcacao=" + idEmbarcacao + ", nomeEmbarcacao="
+ nomeEmbarcacao + ", inscricacaoEmbarcacao="
+ inscricaoEmbarcacao + ", proprietario=" + proprietario + "]";
}
public Integer getIdEmbarcacao() {
return idEmbarcacao;
}
public void setIdEmbarcacao(Integer idEmbarcacao) {
this.idEmbarcacao = idEmbarcacao;
}
public String getNomeEmbarcacao() {
return nomeEmbarcacao;
}
public void setNomeEmbarcacao(String nomeEmbarcacao) {
this.nomeEmbarcacao = nomeEmbarcacao;
}
public String getInscricaoEmbarcacao() {
return inscricaoEmbarcacao;
}
public void setInscricaoEmbarcacao(String inscricaoEmbarcacao) {
this.inscricaoEmbarcacao = inscricaoEmbarcacao;
}
public Proprietario getProprietario() {
return proprietario;
}
public void setProprietario(Proprietario proprietario) {
this.proprietario = proprietario;
}
}
Proprietario POJO
package br.ucb.pojo;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;
import org.hibernate.annotations.IndexColumn;
@Entity
@Table(name = "proprietario")
public class Proprietario implements Serializable {
private static final long serialVersionUID = 1L;
@IndexColumn(name = "idProprietario_UNIQUE")
@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;
public Proprietario() {
this.idProprietario = null;
this.proprietarioNome = null;
this.numeroArrais = null;
this.cpf = null;
this.telefone = null;
}
@Override
public String toString() {
return "Proprietario [idProprietario=" + idProprietario + ", proprietarioNome=" + proprietarioNome
+ ", numeroArrais=" + numeroArrais + ", cpf=" + cpf
+ ", telefone=" + telefone + "]";
}
public Integer getidProprietario() {
return idProprietario;
}
public void setidProprietario(Integer idProprietario) {
this.idProprietario = idProprietario;
}
public String getproprietarioNome() {
return proprietarioNome;
}
public void setproprietarioNome(String proprietarioNome) {
this.proprietarioNome = proprietarioNome;
}
public String getArrais() {
return numeroArrais;
}
public void setArrais(String arrais) {
this.numeroArrais = arrais;
}
public String getCpf() {
return cpf;
}
public void setCpf(String cpf) {
this.cpf = cpf;
}
public String getTelefone() {
return telefone;
}
public void setTelefone(String telefone) {
this.telefone = telefone;
}
}
Classe que faz o insert na tabela proprietario
package br.ucb.aplicacao;
import br.ucb.hibernate.ProprietarioHibernate;
import br.ucb.pojo.Proprietario;
public class ProprietarioController {
public static void inclusaoDeProprietario(Proprietario proprietario1)
throws Exception {
ProprietarioHibernate proHBR = new ProprietarioHibernate();
if (proHBR.inclui(proprietario1))
System.out.println("Inserido: " + proprietario1);
}
public static void exclusaoDeProprietario(Proprietario registro)
throws Exception {
ProprietarioHibernate proHBR = new ProprietarioHibernate();
if (proHBR.exclui(registro))
System.out.println("Excluído: " + registro);
}
public static void alteracaoDeProprietario(Proprietario registro)
throws Exception {
ProprietarioHibernate proHBR = new ProprietarioHibernate();
if (proHBR.altera(registro))
System.out.println("Alterado: " + registro);
}
public static Proprietario consultaDeProprietario(Proprietario registro)
throws Exception {
ProprietarioHibernate proHBR = new ProprietarioHibernate();
registro = proHBR.consulta(registro);
if (registro.getidProprietario() > 0)
System.out.println("Consulta: " + registro);
return registro;
}
public static void listagemDeProprietario() throws Exception {
ProprietarioHibernate proHBR = new ProprietarioHibernate();
System.out.println("*****Listando Tudo*******");
for (Proprietario p : proHBR.listaTudo())
System.out.println(p);
}
public static void listagemDeProprietario(int inicio, int fim)
throws Exception {
ProprietarioHibernate proHBR = new ProprietarioHibernate();
System.out.println("*****Listando Subconjunto Paginado*******");
for (Proprietario p : proHBR.pagina(inicio, fim))
System.out.println(p);
}
public static void main(String[] args) throws Exception {
Proprietario proprietario1 = new Proprietario();
proprietario1.setidProprietario(2);
proprietario1.setproprietarioNome("Paulo");
proprietario1.setArrais("1256897");
proprietario1.setCpf("[telefone removido]");
proprietario1.setTelefone("061-39648611");
inclusaoDeProprietario(proprietario1);
//alteracaoDeProprietario(registro);
//consultaDeProprietario(registro);
//exclusaoDeProprietario(registro);
//listagemDeProprietario();
//listagemDeProprietario(0, 10);
}
}
Meu banco
CREATE TABLE embarcacao (
idEmbarcacao INTEGER UNSIGNED NOT NULL,
proprietario_idProprietario INTEGER UNSIGNED NOT NULL,
nomeEmbarcacao TEXT NOT NULL,
inscricaoEmbarcacao TEXT NOT NULL,
PRIMARY KEY(idEmbarcacao),
INDEX FK_PROPRIETARIO(proprietario_idProprietario)
);
CREATE TABLE proprietario (
idProprietario INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
proprietarioNome TEXT NOT NULL,
numeroArrais TEXT NOT NULL,
cpf CHAR(11) NOT NULL,
telefone CHAR(15) NOT NULL,
PRIMARY KEY(idProprietario)
);
Estou conseguindo inserir o proprietario,a minha duvida e de como fazer a persistencia na tabela embarcacao sendo necessario informar o id do proprietario, ja tentei de varias forma mais sempre da erro.
