Ola tenho uma duvida!
Na minha aplicação tenho um relacionamento
1 X M o qual o lado 1 recebe uma lista de n
minha duvida eh
com jpa eu mapeio o relacionamento para ser bidirecional
segue o codigo das classe modelo(Entidades)
classe AquisicaoServico eh a classe com o relacionamento 1
package modelo;
import java.util.*;
import javax.persistence.*;
@SuppressWarnings("serial")
@Entity
@Table(name="obri_aquisicaoservico")
public class AquisicaoServico implements java.io.Serializable{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@ManyToOne(cascade = CascadeType.PERSIST)
@JoinColumn(name="id_cliente")
private Cli cliente;
@ManyToOne(cascade = CascadeType.PERSIST)
@JoinColumn(name="id_contratado")
private Contratado contratado;
@OneToMany(mappedBy="aquisicao", cascade= CascadeType.PERSIST )
private List<AquisicaoIR> aquisicaoirlista;
//variaveis das datas de cadastro
private int ano;
private int mes;
//variaveis com informações das notas
private int numnota;
private Double valornota;
@Temporal(value=TemporalType.DATE)
private Date emissaonota;
private Double previdenciagps;
private Double municipioiss;
private String obsenvio;
public int getId() {
return id;
}
public Cli getCliente() {
return cliente;
}
public Contratado getContratado() {
return contratado;
}
public List<AquisicaoIR> getAquisicaoirlista() {
return aquisicaoirlista;
}
public int getAno() {
return ano;
}
public int getMes() {
return mes;
}
public int getNumnota() {
return numnota;
}
public Double getValornota() {
return valornota;
}
public Date getEmissaonota() {
return emissaonota;
}
public Double getPrevidenciagps() {
return previdenciagps;
}
public Double getMunicipioiss() {
return municipioiss;
}
public String getObsenvio() {
return obsenvio;
}
public void setId(int id) {
this.id = id;
}
public void setCliente(Cli cliente) {
this.cliente = cliente;
}
public void setContratado(Contratado contratado) {
this.contratado = contratado;
}
public void setAquisicaoirlista(List<AquisicaoIR> aquisicaoirlista) {
this.aquisicaoirlista = aquisicaoirlista;
}
public void setAno(int ano) {
this.ano = ano;
}
public void setMes(int mes) {
this.mes = mes;
}
public void setNumnota(int numnota) {
this.numnota = numnota;
}
public void setValornota(Double valornota) {
this.valornota = valornota;
}
public void setEmissaonota(Date emissaonota) {
this.emissaonota = emissaonota;
}
public void setPrevidenciagps(Double previdenciagps) {
this.previdenciagps = previdenciagps;
}
public void setMunicipioiss(Double municipioiss) {
this.municipioiss = municipioiss;
}
public void setObsenvio(String obsenvio) {
this.obsenvio = obsenvio;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ano;
result = prime
* result
+ ((aquisicaoirlista == null) ? 0 : aquisicaoirlista.hashCode());
result = prime * result + ((cliente == null) ? 0 : cliente.hashCode());
result = prime * result
+ ((contratado == null) ? 0 : contratado.hashCode());
result = prime * result
+ ((emissaonota == null) ? 0 : emissaonota.hashCode());
result = prime * result + id;
result = prime * result + mes;
result = prime * result
+ ((municipioiss == null) ? 0 : municipioiss.hashCode());
result = prime * result + numnota;
result = prime * result
+ ((obsenvio == null) ? 0 : obsenvio.hashCode());
result = prime * result
+ ((previdenciagps == null) ? 0 : previdenciagps.hashCode());
result = prime * result
+ ((valornota == null) ? 0 : valornota.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
AquisicaoServico other = (AquisicaoServico) obj;
if (ano != other.ano)
return false;
if (aquisicaoirlista == null) {
if (other.aquisicaoirlista != null)
return false;
} else if (!aquisicaoirlista.equals(other.aquisicaoirlista))
return false;
if (cliente == null) {
if (other.cliente != null)
return false;
} else if (!cliente.equals(other.cliente))
return false;
if (contratado == null) {
if (other.contratado != null)
return false;
} else if (!contratado.equals(other.contratado))
return false;
if (emissaonota == null) {
if (other.emissaonota != null)
return false;
} else if (!emissaonota.equals(other.emissaonota))
return false;
if (id != other.id)
return false;
if (mes != other.mes)
return false;
if (municipioiss == null) {
if (other.municipioiss != null)
return false;
} else if (!municipioiss.equals(other.municipioiss))
return false;
if (numnota != other.numnota)
return false;
if (obsenvio == null) {
if (other.obsenvio != null)
return false;
} else if (!obsenvio.equals(other.obsenvio))
return false;
if (previdenciagps == null) {
if (other.previdenciagps != null)
return false;
} else if (!previdenciagps.equals(other.previdenciagps))
return false;
if (valornota == null) {
if (other.valornota != null)
return false;
} else if (!valornota.equals(other.valornota))
return false;
return true;
}
}
Classe AquisicaoIR
package modelo;
import javax.persistence.*;
@SuppressWarnings("serial")
@Entity
@Table(name="obri_aquisicao_ir")
public class AquisicaoIR implements java.io.Serializable{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name="id_ir")
private IR ir;
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name="id_aquisicaoservico")
private AquisicaoServico aquisicao;
private Double valor;
public int getId() {
return id;
}
public IR getIr() {
return ir;
}
public AquisicaoServico getAquisicao() {
return aquisicao;
}
public Double getValor() {
return valor;
}
public void setId(int id) {
this.id = id;
}
public void setIr(IR ir) {
this.ir = ir;
}
public void setAquisicao(AquisicaoServico aquisicao) {
this.aquisicao = aquisicao;
}
public void setValor(Double valor) {
this.valor = valor;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result
+ ((aquisicao == null) ? 0 : aquisicao.hashCode());
result = prime * result + id;
result = prime * result + ((ir == null) ? 0 : ir.hashCode());
result = prime * result + ((valor == null) ? 0 : valor.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
AquisicaoIR other = (AquisicaoIR) obj;
if (aquisicao == null) {
if (other.aquisicao != null)
return false;
} else if (!aquisicao.equals(other.aquisicao))
return false;
if (id != other.id)
return false;
if (ir == null) {
if (other.ir != null)
return false;
} else if (!ir.equals(other.ir))
return false;
if (valor == null) {
if (other.valor != null)
return false;
} else if (!valor.equals(other.valor))
return false;
return true;
}
}
a classe AquisicaoIR ela eh a Dona do relacionamento, logo que a classe com o lado M
manda na relação, a Classe AquisicaoServico possui uma lista de AquisicaoIR, no meu
cadastro estou salvando a lista. Minha pergunta é!
Se eu salvar a lista de AquisiçãoIR na classe AquisicaoServico eu preciso realizar o cadastro
na classe AquisicaoIR ou com o relacionamento sendo bidirecional o hibernate faz ele para mim.
Segui as dicas do livro do http://uaihebert.com/?p=1622
Muito Bom o livro, mas tenho essa duvida