Seguinte, estou tentando salvar um produto, e esse produto tem um fornecedor, mas sempre que tento salvar dá nullpointer, o porque eu não sei :/
Aqui seguem as classes
Produto@Entity
@Table(name = "tbl_produto")
public class Produto {
@Id
@GeneratedValue
@Column(name = "id_produto")
private long id;
@Column(name = "nome", nullable = false, length = 50)
private String nome;
@Column(name = "preco_unitario", length = 10, nullable = false)
private double precoUnitario;
@Column(name = "preco_venda", length = 10)
private double precoVenda;
@Column(name = "unidade_medida", length = 2)
private String unidadeMedida;
@Column(name = "quantidade_disponivel", length = 20)
private int quantidadeDisponivel;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "id_fornecedor", insertable = true, updatable = true)
@Fetch(FetchMode.JOIN)
@Cascade(CascadeType.SAVE_UPDATE)
private Fornecedor fornecedor;
@Column(name = "tipo")
private String tipo;
Fornecedor
@Entity
@Table(name="tbl_fornecedor")
public class Fornecedor {
@Id
@GeneratedValue
@Column(name="id_fornecedor")
private long id;
@Column(name = "nome", nullable = false, unique=true , length = 50)
private String nome;
@Column(name = "telefone", length = 20)
private String telefone;
@Column(name = "endereco", length = 70)
private String endereco;
@Column(name = "numero", length = 6)
private String numero;
@Column(name = "bairro", length = 20)
private String bairro;
@Column(name = "conta", length = 30)
private String conta;
@Column(name = "banco", length = 30)
private String banco;
@Column(name = "cnpj", length = 14)
private String cnpj;
@Column(name = "email", length = 40)
private String email;
@OneToMany(mappedBy="fornecedor", fetch=FetchType.EAGER)
@Cascade(CascadeType.ALL)
private List<Produto> produtos;
Então, primeiro eu cadastro um fornecedor:
Fornecedor f = new Fornecedor();
f.setNome("João");
f.setEndereco("Rua Joao de Deus");
f.setBairro("Centro");
f.setNumero("18");
f.setEmail("[email removido]");
fachada.salvarFornecedor(f);
p.setNome("Cerveja Skol");
p.setPrecoUnitario(2);
p.setPrecoVenda(3);
p.setQuantidadeDisponivel(1);
p.setTipo("Bebida");
p.setUnidadeMedida("teste");
fachada.salvarProduto(p);
//Seta o fornecedor
f.setId(2);
p.setFornecedor(f);
//Seta o produto no fornecedor
ArrayList<Produto> produtos = new ArrayList<Produto>();
f.setProdutos(produtos);
//Salva o Produto
fachada.salvarProduto(p);
Mas dá nullpointer na parte de salvar o Produto, alguem tem alguma dica porque ? :(
Aqui segue o erro :129 [main] INFO org.hibernate.annotations.common.Version - Hibernate Commons Annotations 3.2.0.Final
137 [main] INFO org.hibernate.cfg.Environment - Hibernate 3.6.4.Final
139 [main] INFO org.hibernate.cfg.Environment - hibernate.properties not found
142 [main] INFO org.hibernate.cfg.Environment - Bytecode provider name : javassist
146 [main] INFO org.hibernate.cfg.Environment - using JDK 1.4 java.sql.Timestamp handling
217 [main] INFO org.hibernate.cfg.Configuration - configuring from resource: /hibernate.cfg.xml
217 [main] INFO org.hibernate.cfg.Configuration - Configuration resource: /hibernate.cfg.xml
287 [main] WARN org.hibernate.util.DTDEntityResolver - recognized obsolete hibernate namespace http://hibernate.sourceforge.net/. Use namespace http://www.hibernate.org/dtd/ instead. Refer to Hibernate 3.6 Migration Guide!
342 [main] INFO org.hibernate.cfg.Configuration - Configured SessionFactory:
425 [main] INFO org.hibernate.cfg.AnnotationBinder - Binding entity from annotated class: modelo.Bebida
472 [main] INFO org.hibernate.cfg.annotations.EntityBinder - Bind entity modelo.Bebida on table tbl_bebida
579 [main] INFO org.hibernate.cfg.AnnotationBinder - Binding entity from annotated class: modelo.Funcionario
579 [main] INFO org.hibernate.cfg.annotations.EntityBinder - Bind entity modelo.Funcionario on table tbl_funcionario
588 [main] INFO org.hibernate.cfg.AnnotationBinder - Binding entity from annotated class: modelo.Fornecedor
589 [main] INFO org.hibernate.cfg.annotations.EntityBinder - Bind entity modelo.Fornecedor on table tbl_fornecedor
625 [main] INFO org.hibernate.cfg.AnnotationBinder - Binding entity from annotated class: modelo.Ingrediente
626 [main] INFO org.hibernate.cfg.annotations.EntityBinder - Bind entity modelo.Ingrediente on table tbl_ingrediente
629 [main] INFO org.hibernate.cfg.AnnotationBinder - Binding entity from annotated class: modelo.Mesa
629 [main] INFO org.hibernate.cfg.annotations.EntityBinder - Bind entity modelo.Mesa on table tbl_mesa
638 [main] INFO org.hibernate.cfg.AnnotationBinder - Binding entity from annotated class: modelo.Veiculo
638 [main] INFO org.hibernate.cfg.annotations.EntityBinder - Bind entity modelo.Veiculo on table tbl_veiculo
641 [main] INFO org.hibernate.cfg.AnnotationBinder - Binding entity from annotated class: modelo.Pizza
641 [main] INFO org.hibernate.cfg.annotations.EntityBinder - Bind entity modelo.Pizza on table tbl_pizza
644 [main] INFO org.hibernate.cfg.AnnotationBinder - Binding entity from annotated class: modelo.Sabor
645 [main] INFO org.hibernate.cfg.annotations.EntityBinder - Bind entity modelo.Sabor on table tbl_sabor
648 [main] INFO org.hibernate.cfg.AnnotationBinder - Binding entity from annotated class: modelo.Produto
648 [main] INFO org.hibernate.cfg.annotations.EntityBinder - Bind entity modelo.Produto on table tbl_produto
665 [main] INFO org.hibernate.cfg.annotations.CollectionBinder - Mapping collection: modelo.Fornecedor.produtos -> tbl_produto
666 [main] INFO org.hibernate.cfg.Configuration - Hibernate Validator not found: ignoring
670 [main] INFO org.hibernate.cfg.search.HibernateSearchEventListenerRegister - Unable to find org.hibernate.search.event.FullTextIndexEventListener on the classpath. Hibernate Search is not enabled.
677 [main] INFO org.hibernate.connection.DriverManagerConnectionProvider - Using Hibernate built-in connection pool (not for production use!)
677 [main] INFO org.hibernate.connection.DriverManagerConnectionProvider - Hibernate connection pool size: 20
677 [main] INFO org.hibernate.connection.DriverManagerConnectionProvider - autocommit mode: false
685 [main] INFO org.hibernate.connection.DriverManagerConnectionProvider - using driver: com.mysql.jdbc.Driver at URL: jdbc:mysql://localhost/lapizza
686 [main] INFO org.hibernate.connection.DriverManagerConnectionProvider - connection properties: {user=root, password=****}
1079 [main] INFO org.hibernate.dialect.Dialect - Using dialect: org.hibernate.dialect.MySQL5InnoDBDialect
1094 [main] INFO org.hibernate.cfg.SettingsFactory - Database ->
name : MySQL
version : 5.5.22
major : 5
minor : 5
1094 [main] INFO org.hibernate.cfg.SettingsFactory - Driver ->
name : MySQL-AB JDBC Driver
version : mysql-connector-java-5.1.18 ( Revision: [email removido]-20110930151701-jfj14ddfq48ifkfq )
major : 5
minor : 1
1095 [main] INFO org.hibernate.transaction.TransactionFactoryFactory - Using default transaction strategy (direct JDBC transactions)
1096 [main] INFO org.hibernate.transaction.TransactionManagerLookupFactory - No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended)
1097 [main] INFO org.hibernate.cfg.SettingsFactory - Automatic flush during beforeCompletion(): disabled
1097 [main] INFO org.hibernate.cfg.SettingsFactory - Automatic session close at end of transaction: disabled
1097 [main] INFO org.hibernate.cfg.SettingsFactory - JDBC batch size: 15
1097 [main] INFO org.hibernate.cfg.SettingsFactory - JDBC batch updates for versioned data: disabled
1097 [main] INFO org.hibernate.cfg.SettingsFactory - Scrollable result sets: enabled
1097 [main] INFO org.hibernate.cfg.SettingsFactory - JDBC3 getGeneratedKeys(): enabled
1097 [main] INFO org.hibernate.cfg.SettingsFactory - Connection release mode: auto
1098 [main] INFO org.hibernate.cfg.SettingsFactory - Default schema: lapizza
1098 [main] INFO org.hibernate.cfg.SettingsFactory - Maximum outer join fetch depth: 2
1098 [main] INFO org.hibernate.cfg.SettingsFactory - Default batch fetch size: 1
1098 [main] INFO org.hibernate.cfg.SettingsFactory - Generate SQL with comments: disabled
1098 [main] INFO org.hibernate.cfg.SettingsFactory - Order SQL updates by primary key: disabled
1098 [main] INFO org.hibernate.cfg.SettingsFactory - Order SQL inserts for batching: disabled
1098 [main] INFO org.hibernate.cfg.SettingsFactory - Query translator: org.hibernate.hql.ast.ASTQueryTranslatorFactory
1100 [main] INFO org.hibernate.hql.ast.ASTQueryTranslatorFactory - Using ASTQueryTranslatorFactory
1100 [main] INFO org.hibernate.cfg.SettingsFactory - Query language substitutions: {}
1100 [main] INFO org.hibernate.cfg.SettingsFactory - JPA-QL strict compliance: disabled
1100 [main] INFO org.hibernate.cfg.SettingsFactory - Second-level cache: enabled
1100 [main] INFO org.hibernate.cfg.SettingsFactory - Query cache: disabled
1100 [main] INFO org.hibernate.cfg.SettingsFactory - Cache region factory : org.hibernate.cache.impl.NoCachingRegionFactory
1101 [main] INFO org.hibernate.cfg.SettingsFactory - Optimize cache for minimal puts: disabled
1101 [main] INFO org.hibernate.cfg.SettingsFactory - Structured second-level cache entries: disabled
1106 [main] INFO org.hibernate.cfg.SettingsFactory - Echoing all SQL to stdout
1106 [main] INFO org.hibernate.cfg.SettingsFactory - Statistics: disabled
1106 [main] INFO org.hibernate.cfg.SettingsFactory - Deleted entity synthetic identifier rollback: disabled
1106 [main] INFO org.hibernate.cfg.SettingsFactory - Default entity-mode: pojo
1106 [main] INFO org.hibernate.cfg.SettingsFactory - Named query checking : enabled
1107 [main] INFO org.hibernate.cfg.SettingsFactory - Check Nullability in Core (should be disabled when Bean Validation is on): enabled
1133 [main] INFO org.hibernate.impl.SessionFactoryImpl - building session factory
1139 [main] INFO org.hibernate.type.BasicTypeRegistry - Type registration [wrapper_materialized_blob] overrides previous : org.hibernate.type.WrappedMaterializedBlobType@51b109ef
1139 [main] INFO org.hibernate.type.BasicTypeRegistry - Type registration [materialized_clob] overrides previous : org.hibernate.type.MaterializedClobType@3e0353cf
1139 [main] INFO org.hibernate.type.BasicTypeRegistry - Type registration [clob] overrides previous : org.hibernate.type.ClobType@4c735ad7
1139 [main] INFO org.hibernate.type.BasicTypeRegistry - Type registration [java.sql.Clob] overrides previous : org.hibernate.type.ClobType@4c735ad7
1139 [main] INFO org.hibernate.type.BasicTypeRegistry - Type registration [materialized_blob] overrides previous : org.hibernate.type.MaterializedBlobType@29510077
1139 [main] INFO org.hibernate.type.BasicTypeRegistry - Type registration [wrapper_characters_clob] overrides previous : org.hibernate.type.CharacterArrayClobType@4f599d2
1139 [main] INFO org.hibernate.type.BasicTypeRegistry - Type registration [characters_clob] overrides previous : org.hibernate.type.PrimitiveCharacterArrayClobType@1845ac89
1139 [main] INFO org.hibernate.type.BasicTypeRegistry - Type registration [blob] overrides previous : org.hibernate.type.BlobType@64262d2
1139 [main] INFO org.hibernate.type.BasicTypeRegistry - Type registration [java.sql.Blob] overrides previous : org.hibernate.type.BlobType@64262d2
1526 [main] INFO org.hibernate.impl.SessionFactoryObjectFactory - Factory name:
1529 [main] INFO org.hibernate.util.NamingHelper - JNDI InitialContext properties:{}
1532 [main] WARN org.hibernate.impl.SessionFactoryObjectFactory - Could not bind factory to JNDI
javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial
at javax.naming.spi.NamingManager.getInitialContext(Unknown Source)
at javax.naming.InitialContext.getDefaultInitCtx(Unknown Source)
at javax.naming.InitialContext.getURLOrDefaultInitCtx(Unknown Source)
at javax.naming.InitialContext.getNameParser(Unknown Source)
at org.hibernate.util.NamingHelper.bind(NamingHelper.java:75)
at org.hibernate.impl.SessionFactoryObjectFactory.addInstance(SessionFactoryObjectFactory.java:113)
at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:367)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1872)
at hibernate.HibernateUtil.<clinit>(HibernateUtil.java:22)
at repositorio.RepositorioBebida.<init>(RepositorioBebida.java:18)
at fachada.Fachada.iniciarRepositorios(Fachada.java:39)
at fachada.Fachada.<init>(Fachada.java:51)
at fachada.Fachada.obterInstancia(Fachada.java:59)
at Teste.main(Teste.java:19)
A sessão já existe!!
A sessão já existe!!
A sessão já existe!!
A sessão já existe!!
A sessão já existe!!
Hibernate:
insert
into
lapizza.tbl_fornecedor
(bairro, banco, cnpj, conta, email, endereco, nome, numero, telefone)
values
(?, ?, ?, ?, ?, ?, ?, ?, ?)
Erro Dao salvar: null
Erro Dao salvar: null
java.lang.NullPointerException
at dao.Dao.salvar(Dao.java:28)
at repositorio.RepositorioProduto.salvarProduto(RepositorioProduto.java:22)
at fachada.Fachada.salvarProduto(Fachada.java:170)
at Teste.main(Teste.java:39)
java.lang.NullPointerException
at dao.Dao.salvar(Dao.java:28)
at repositorio.RepositorioProduto.salvarProduto(RepositorioProduto.java:22)
at fachada.Fachada.salvarProduto(Fachada.java:170)
at Teste.main(Teste.java:50)