Galera, por favor alguém pode me ajudar ?? Estou com um problema de relacionamento quando faço a inserção do objeto Entrada a JPA deveria guardar o valor do id_entrada na ForeingKey da tabela Equipamentos. Para que a tabela equipamentos saiba de qual entrada de nota ela veio.
Fiz uma relação OneToMany de Entrada para equipamentos e vice-versa com ManyToOne. Só que id não esta sendo salvo na tabela. ele cria a FK entrada_id na tabela equipamentos, mas não insere o id.
Entidade Entrada, abaixo:
@Entity
@Table(name = "entrada")
public class Entrada implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id_entrada")
private Long id;
/**
* Funcionando corretamente
*/
@OneToOne(cascade = CascadeType.ALL)
private Usuario usuario;
@OneToMany(mappedBy = "entrada", cascade = CascadeType.ALL)
private List<Equipamento> equipamentos;
public List<Equipamento> getEquipamentos() {
return equipamentos;
}
public void setEquipamentos(List<Equipamento> equipamentos) {
this.equipamentos = equipamentos;
}
public Usuario getUsuario() {
return usuario;
}
public void setUsuario(Usuario usuario) {
this.usuario = usuario;
}
private String nota;
private String fornecedor;
@Column(precision = 2, scale = 2)
private Double custo;
@Temporal(TemporalType.DATE)
private Calendar data_da_compra;
public String getNota() {
return nota;
}
public void setNota(String nota) {
this.nota = nota;
}
public String getFornecedor() {
return fornecedor;
}
public void setFornecedor(String fornecedor) {
this.fornecedor = fornecedor;
}
public Double getCusto() {
return custo;
}
public void setCusto(Double custo) {
this.custo = custo;
}
public Calendar getData_da_compra() {
return data_da_compra;
}
public void setData_da_compra(Calendar data_da_compra) {
this.data_da_compra = data_da_compra;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@Override
public int hashCode() {
int hash = 0;
hash += (id != null ? id.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof Entrada)) {
return false;
}
Entrada other = (Entrada) object;
if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
return false;
}
return true;
}
@Override
public String toString() {
return "br.com.atacadao.entidades.Entrada[ id=" + id + " ]";
}
}
Entidade Equipamento abaixo:
@Entity
@Table(name = "equipamentos")
public class Equipamento implements Serializable {
private static final long serialVersionUID = 1L;
@ManyToOne
@JoinColumn(name = "entrada_id")
private Entrada entrada;
public Entrada getEntrada() {
return entrada;
}
public void setEntrada(Entrada entrada) {
this.entrada = entrada;
}
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id_equipamento")
private Long id;
private String nome;
@Temporal(TemporalType.DATE)
@Basic(optional = true)
private Calendar validade;
private String situacao;
private String tipo;
@Basic(optional = false)
@Column(name = "valor", scale = 2, precision = 2,nullable = false,insertable = true, updatable = true)
private Double valor;
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public Calendar getValidade() {
return validade;
}
public void setValidade(Calendar validade) {
this.validade = validade;
}
public String getSituacao() {
return situacao;
}
public void setSituacao(String situacao) {
this.situacao = situacao;
}
public String getTipo() {
return tipo;
}
public void setTipo(String tipo) {
this.tipo = tipo;
}
public Double getValor() {
return valor;
}
public void setValor(Double valor) {
this.valor = valor;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@Override
public int hashCode() {
int hash = 0;
hash += (id != null ? id.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof Equipamento)) {
return false;
}
Equipamento other = (Equipamento) object;
if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
return false;
}
return true;
}
@Override
public String toString() {
return "br.com.atacadao.entidades.Equipamento[ id=" + id + " ]";
}
}
Entidade Usuario abaixo:
@Entity
@Table(name = "usuarios")
public class Usuario implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Basic(optional = false)
@Column(length = 45,insertable = true,nullable = false,updatable = true)
private String nome;
@Basic(optional = false)
@Column(length = 120,insertable = true,nullable = false,updatable = true)
private String sobrenome;
@Basic(optional = false)
@Column(length = 45,insertable = true,nullable = false,updatable = true)
private String senha;
@Basic(optional = false)
@Column(length = 45,insertable = true,nullable = false,updatable = true)
private String login;
@Basic(optional = false)
@Column(length = 45,insertable = true,nullable = false,updatable = true)
private String niveis;
@Basic(optional = false)
@Column(length = 45,insertable = true,nullable = false,updatable = true)
private String local;
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getSobrenome() {
return sobrenome;
}
public void setSobrenome(String sobrenome) {
this.sobrenome = sobrenome;
}
public String getSenha() {
return senha;
}
public void setSenha(String senha) {
this.senha = senha;
}
public String getLogin() {
return login;
}
public void setLogin(String login) {
this.login = login;
}
public String getNiveis() {
return niveis;
}
public void setNiveis(String niveis) {
this.niveis = niveis;
}
public String getLocal() {
return local;
}
public void setLocal(String local) {
this.local = local;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@Override
public int hashCode() {
int hash = 0;
hash += (id != null ? id.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof Usuario)) {
return false;
}
Usuario other = (Usuario) object;
if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
return false;
}
return true;
}
@Override
public String toString() {
return "br.com.atacadao.entidades.usuario[ id=" + id + " ]";
}
}
Saida da execução do NetBeans abaixo:
run:
out 10, 2016 12:44:29 PM org.hibernate.ejb.HibernatePersistence logDeprecation
WARN: HHH015016: Encountered a deprecated javax.persistence.spi.PersistenceProvider [org.hibernate.ejb.HibernatePersistence]; use [org.hibernate.jpa.HibernatePersistenceProvider] instead.
out 10, 2016 12:44:29 PM org.hibernate.ejb.HibernatePersistence logDeprecation
WARN: HHH015016: Encountered a deprecated javax.persistence.spi.PersistenceProvider [org.hibernate.ejb.HibernatePersistence]; use [org.hibernate.jpa.HibernatePersistenceProvider] instead.
out 10, 2016 12:44:29 PM org.hibernate.ejb.HibernatePersistence logDeprecation
WARN: HHH015016: Encountered a deprecated javax.persistence.spi.PersistenceProvider [org.hibernate.ejb.HibernatePersistence]; use [org.hibernate.jpa.HibernatePersistenceProvider] instead.
out 10, 2016 12:44:30 PM org.hibernate.jpa.internal.util.LogHelper logPersistenceUnitInformation
INFO: HHH000204: Processing PersistenceUnitInfo [
name: TestandoPU
...]
out 10, 2016 12:44:30 PM org.hibernate.Version logVersion
INFO: HHH000412: Hibernate Core {4.3.1.Final}
out 10, 2016 12:44:30 PM org.hibernate.cfg.Environment <clinit>
INFO: HHH000206: hibernate.properties not found
out 10, 2016 12:44:30 PM org.hibernate.cfg.Environment buildBytecodeProvider
INFO: HHH000021: Bytecode provider name : javassist
out 10, 2016 12:44:30 PM org.hibernate.annotations.common.reflection.java.JavaReflectionManager <clinit>
INFO: HCANN000001: Hibernate Commons Annotations {4.0.4.Final}
out 10, 2016 12:44:30 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
WARN: HHH000402: Using Hibernate built-in connection pool (not for production use!)
out 10, 2016 12:44:30 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH000401: using driver [org.postgresql.Driver] at URL [jdbc:postgresql://localhost:5433/almoxarifado]
out 10, 2016 12:44:30 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH000046: Connection properties: {user=postgres, password=****}
out 10, 2016 12:44:30 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH000006: Autocommit mode: false
out 10, 2016 12:44:30 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
INFO: HHH000115: Hibernate connection pool size: 20 (min=1)
out 10, 2016 12:44:30 PM org.hibernate.dialect.Dialect <init>
INFO: HHH000400: Using dialect: org.hibernate.dialect.PostgreSQL9Dialect
out 10, 2016 12:44:30 PM org.hibernate.engine.jdbc.internal.LobCreatorBuilder useContextualLobCreation
INFO: HHH000424: Disabling contextual LOB creation as createClob() method threw error : java.lang.reflect.InvocationTargetException
out 10, 2016 12:44:30 PM org.hibernate.hql.internal.ast.ASTQueryTranslatorFactory <init>
INFO: HHH000397: Using ASTQueryTranslatorFactory
out 10, 2016 12:44:30 PM org.hibernate.tool.hbm2ddl.SchemaUpdate execute
INFO: HHH000228: Running hbm2ddl schema update
out 10, 2016 12:44:30 PM org.hibernate.tool.hbm2ddl.SchemaUpdate execute
INFO: HHH000102: Fetching database metadata
out 10, 2016 12:44:30 PM org.hibernate.tool.hbm2ddl.SchemaUpdate execute
INFO: HHH000396: Updating schema
out 10, 2016 12:44:30 PM org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: HHH000261: Table found: public.saida
out 10, 2016 12:44:30 PM org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: HHH000037: Columns: [datasol, id_equipamento, id_usuario, responsavel, id_saida, datalib]
out 10, 2016 12:44:30 PM org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: HHH000108: Foreign keys: [chave estrangeira usuario, chave estrangira equipamentos]
out 10, 2016 12:44:30 PM org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: HHH000126: Indexes: [chave primaria saida]
out 10, 2016 12:44:30 PM org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: HHH000261: Table found: public.solicitacoes
out 10, 2016 12:44:30 PM org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: HHH000037: Columns: [datasol, id_usuario, id_solicitacao, nome, responsavel, datalib]
out 10, 2016 12:44:30 PM org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: HHH000108: Foreign keys: []
out 10, 2016 12:44:30 PM org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: HHH000126: Indexes: [solicitacoes_pkey]
out 10, 2016 12:44:30 PM org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: HHH000261: Table found: public.entrada
out 10, 2016 12:44:30 PM org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: HHH000037: Columns: [usuario_id, custo, data_da_compra, fornecedor, nota, id_entrada]
out 10, 2016 12:44:30 PM org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: HHH000108: Foreign keys: [fk_jn6q94c02o0knmanhvnajuwrg]
out 10, 2016 12:44:30 PM org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: HHH000126: Indexes: [chave primaria entrada]
out 10, 2016 12:44:30 PM org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: HHH000261: Table found: public.equipamentos
out 10, 2016 12:44:30 PM org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: HHH000037: Columns: [situacao, tipo, id_equipamento, entrada_id, valor, nome, validade]
out 10, 2016 12:44:30 PM org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: HHH000108: Foreign keys: [fk_a9p4bh11rejwqosdh31b0rv9e]
out 10, 2016 12:44:30 PM org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: HHH000126: Indexes: [chave primaria equipamento]
out 10, 2016 12:44:31 PM org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: HHH000261: Table found: public.usuarios
out 10, 2016 12:44:31 PM org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: HHH000037: Columns: [senha, niveis, nome, id, sobrenome, login, local]
out 10, 2016 12:44:31 PM org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: HHH000108: Foreign keys: []
out 10, 2016 12:44:31 PM org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: HHH000126: Indexes: [usuarios_pkey]
out 10, 2016 12:44:31 PM org.hibernate.tool.hbm2ddl.SchemaUpdate execute
INFO: HHH000232: Schema update complete
Hibernate:
select
nextval ('hibernate_sequence')
Hibernate:
select
nextval ('hibernate_sequence')
Hibernate:
select
nextval ('hibernate_sequence')
Hibernate:
insert
into
usuarios
(local, login, niveis, nome, senha, sobrenome, id)
values
(?, ?, ?, ?, ?, ?, ?)
Hibernate:
insert
into
entrada
(custo, data_da_compra, fornecedor, nota, usuario_id, id_entrada)
values
(?, ?, ?, ?, ?, ?)
Hibernate:
insert
into
equipamentos
(entrada_id, nome, situacao, tipo, validade, valor, id_equipamento)
values
(?, ?, ?, ?, ?, ?, ?)
CONSTRUÍDO COM SUCESSO (tempo total: 1 segundo)
Saida do Banco Abaixo:
Estou precisando muito resolver isso.
Desde já, muito grato a Todos