Este é um post disponível para assinantes MVPEste post também está disponível para assinantes da Java Magazine ou para quem possui Créditos DevMedia. Clique aqui para saber mais!
Video: Desvendando o JPA - Aula 4 - Chaves compostas
Nesta vídeo aula abordamos a prática rotineira de utilizar chaves compostas como CHAVES PRIMARIAS de uma tabela.
Título:
Tempo: 00:14:02
Mini-Resumo: Nesta vídeo aula abordamos a prática rotineira de utilizar chaves compostas como CHAVES PRIMARIAS de uma tabela. Mostramos como mapear este tipo de chave utilizando JPA e como expressar uma chave composta como um objeto (e não mais uma composição de campos). Abordamos problemas que podem ser encontrados e suas possíveis soluções.
Exemplos construídos: Construímos a entidade PeopleCP que é um clone da entidade People porem trabalha com chave composta. Mostramos os problemas tradicionais de se trabalhar com este tipo de abordagem e como JPA resolve eles. Imperdível para quem adora uma base de dados bem modelada e não abre mão da normalização extrema.
Tecnologias Utilizadas: Java SE 6, NetBeans 6.5, JPA 1.0, Hibernate 3.3 e TopLink Essentials
Palavras chaves: netbeans6 jpa hibernate orm java j2se java6
Tempo: 00:14:02
Mini-Resumo: Nesta vídeo aula abordamos a prática rotineira de utilizar chaves compostas como CHAVES PRIMARIAS de uma tabela. Mostramos como mapear este tipo de chave utilizando JPA e como expressar uma chave composta como um objeto (e não mais uma composição de campos). Abordamos problemas que podem ser encontrados e suas possíveis soluções.
Exemplos construídos: Construímos a entidade PeopleCP que é um clone da entidade People porem trabalha com chave composta. Mostramos os problemas tradicionais de se trabalhar com este tipo de abordagem e como JPA resolve eles. Imperdível para quem adora uma base de dados bem modelada e não abre mão da normalização extrema.
Tecnologias Utilizadas: Java SE 6, NetBeans 6.5, JPA 1.0, Hibernate 3.3 e TopLink Essentials
Palavras chaves: netbeans6 jpa hibernate orm java j2se java6

10 COMENTÁRIOS
Paulo Jorge Carvalho Da Silva
estou acompanhando a 4 aula que trata de chave composta porém quando estou criando a tabela peopleCP com os campos id e seq o netbeans não permite tal operação, exibindo a mensagem: FOI ESPECIFICADA MAIS DE UMA RESTRIÇÃO DE CHAVE PRIMARIA PARA A TABELA PEOPLECP. Como podemos resolver a questão?
Obrigado,
Paulo Carvalho
[há +1 ano] -
Responder
[autor]
Dyego Souza Do Carmo
OI,
Poderia colar aqui a ENTIDADE e tambem o stack trace completo do erro ?
Poderia colar aqui a ENTIDADE e tambem o stack trace completo do erro ?
[há +1 ano] -
Responder

Erika Lares
Boa noite,
Acompanho várias videos aulas sua e adoro, pois aprendo muito. Gostaria de sabe se tem como gerar um id auto-incremente em uma chave composta ?
Por exemplo estou fazendo um mini aplicação onde ao criar a tabela prontuario, a mesma terá uma chave composta com o id do paciente e o id do prontuario que gostaria que fosse auto-incremente.
[há +1 ano] -
Responder
[autor]
Dyego Souza Do Carmo
Opa !
Não , pois ela é composta , para esta funcionalidade voce deverá criar um trigger ! Ou uma sequence :)
Não , pois ela é composta , para esta funcionalidade voce deverá criar um trigger ! Ou uma sequence :)
[há +1 ano] -
Responder
Leandro Henrique Perez
org.hibernate.connection.DriverManagerConnectionProvider configure
GRAVE: JDBC Driver class not found:
java.lang.ClassNotFoundException:
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)
at org.hibernate.util.ReflectHelper.classForName(ReflectHelper.java:100)
at org.hibernate.connection.DriverManagerConnectionProvider.configure(DriverManagerConnectionProvider.java:61)
at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:124)
at org.hibernate.ejb.InjectionSettingsFactory.createConnectionProvider(InjectionSettingsFactory.java:29)
at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:62)
at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2009)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1292)
at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:859)
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:669)
at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:126)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:51)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:33)
at aplicacao.TheAppClass.main(TheAppClass.java:27)
Exception in thread "main" javax.persistence.PersistenceException: [PersistenceUnit: proJPAPersistenceUnit] Unable to build EntityManagerFactory
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:677)
at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:126)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:51)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:33)
at aplicacao.TheAppClass.main(TheAppClass.java:27)
Caused by: org.hibernate.HibernateException: JDBC Driver class not found:
at org.hibernate.connection.DriverManagerConnectionProvider.configure(DriverManagerConnectionProvider.java:66)
at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:124)
at org.hibernate.ejb.InjectionSettingsFactory.createConnectionProvider(InjectionSettingsFactory.java:29)
at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:62)
at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2009)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1292)
at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:859)
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:669)
... 4 more
Caused by: java.lang.ClassNotFoundException:
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)
at org.hibernate.util.ReflectHelper.classForName(ReflectHelper.java:100)
at org.hibernate.connection.DriverManagerConnectionProvider.configure(DriverManagerConnectionProvider.java:61)
... 11 more
Java Result: 1
GRAVE: JDBC Driver class not found:
java.lang.ClassNotFoundException:
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)
at org.hibernate.util.ReflectHelper.classForName(ReflectHelper.java:100)
at org.hibernate.connection.DriverManagerConnectionProvider.configure(DriverManagerConnectionProvider.java:61)
at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:124)
at org.hibernate.ejb.InjectionSettingsFactory.createConnectionProvider(InjectionSettingsFactory.java:29)
at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:62)
at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2009)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1292)
at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:859)
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:669)
at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:126)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:51)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:33)
at aplicacao.TheAppClass.main(TheAppClass.java:27)
Exception in thread "main" javax.persistence.PersistenceException: [PersistenceUnit: proJPAPersistenceUnit] Unable to build EntityManagerFactory
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:677)
at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:126)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:51)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:33)
at aplicacao.TheAppClass.main(TheAppClass.java:27)
Caused by: org.hibernate.HibernateException: JDBC Driver class not found:
at org.hibernate.connection.DriverManagerConnectionProvider.configure(DriverManagerConnectionProvider.java:66)
at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:124)
at org.hibernate.ejb.InjectionSettingsFactory.createConnectionProvider(InjectionSettingsFactory.java:29)
at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:62)
at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2009)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1292)
at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:859)
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:669)
... 4 more
Caused by: java.lang.ClassNotFoundException:
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)
at org.hibernate.util.ReflectHelper.classForName(ReflectHelper.java:100)
at org.hibernate.connection.DriverManagerConnectionProvider.configure(DriverManagerConnectionProvider.java:61)
... 11 more
Java Result: 1
[há +1 ano] -
Responder

Leandro Henrique Perez
Resolvi meu problema descrito acima assim:
Vá nas propriedades do projeto (No NetBeans), em bibliotecas, Adicionar Jar/Pasta, e Adicione o jar que normalmente está em C:\Program Files\Sun\JavaDB\lib\derbyclient.jar.
Vá nas propriedades do projeto (No NetBeans), em bibliotecas, Adicionar Jar/Pasta, e Adicione o jar que normalmente está em C:\Program Files\Sun\JavaDB\lib\derbyclient.jar.
[há +1 ano] -
Responder

Maiara Brito
Olá,
Também estou com problemas para completar esse exemplo. No meu caso quanto a persistenceUnit esta com a biblioteca EclipseLink exibe o seguinte erro:
Exception in thread "main" java.lang.IllegalStateException:
Exception Description: No transaction is currently active
at org.eclipse.persistence.internal.jpa.transaction.EntityTransactionImpl.commitInternal(EntityTransactionImpl.java:77)
at org.eclipse.persistence.internal.jpa.transaction.EntityTransactionImpl.commit(EntityTransactionImpl.java:63)
at...
Quando persistenceUnit esta com o TopLink exibi a seguinte mensagem:
INFO: Not binding factory to JNDI, no JNDI name configured
Exception in thread "main" java.lang.IllegalStateException: Transaction not active
at org.hibernate.ejb.TransactionImpl.commit(TransactionImpl.java:47)
Sabe informar como resolvo?
Também estou com problemas para completar esse exemplo. No meu caso quanto a persistenceUnit esta com a biblioteca EclipseLink exibe o seguinte erro:
Exception in thread "main" java.lang.IllegalStateException:
Exception Description: No transaction is currently active
at org.eclipse.persistence.internal.jpa.transaction.EntityTransactionImpl.commitInternal(EntityTransactionImpl.java:77)
at org.eclipse.persistence.internal.jpa.transaction.EntityTransactionImpl.commit(EntityTransactionImpl.java:63)
at...
Quando persistenceUnit esta com o TopLink exibi a seguinte mensagem:
INFO: Not binding factory to JNDI, no JNDI name configured
Exception in thread "main" java.lang.IllegalStateException: Transaction not active
at org.hibernate.ejb.TransactionImpl.commit(TransactionImpl.java:47)
Sabe informar como resolvo?
[há +1 mês] -
Responder

Bruno De Souza
Boa tarde Dyego,
Estou criando um projeto onde tenho duas classe que se relacionam e formar uma terceira, seria o muitos para muitos. Mas esta terceira além de de guardar as chaves precisa guardar alguns dados adicionais como faço? Pensei em fazer um para muitos da terceira classe para as outras duas principais, mas esta terceira precisa de chave composta formada pelas duas, não tenho idéia de como resolver.
Poderia me ajudar?
Obrigado
Estou criando um projeto onde tenho duas classe que se relacionam e formar uma terceira, seria o muitos para muitos. Mas esta terceira além de de guardar as chaves precisa guardar alguns dados adicionais como faço? Pensei em fazer um para muitos da terceira classe para as outras duas principais, mas esta terceira precisa de chave composta formada pelas duas, não tenho idéia de como resolver.
Poderia me ajudar?
Obrigado
[há 9 dias] -
Responder
[autor]
Dyego Souza Do Carmo
O JPA faz isso sozinho... nas proximas aulas tem exatamente o que vc esta pedindo... Muitos para mUitos :)
atenciosamente,
atenciosamente,
[há 5 dias] -
Responder
Você está em:
canal Java
Publicidade
Este post faz parte de:
Curso(s):
Desvendando o JPA
Formações:
Formação Java web Developer
Curso(s):
Formações:
Dyego Souza Do Carmo
Space do autor
Engenheiro da Computação e evangelista da tecnologia Java , a mais de 15 anos especialista no sistema operacional linux. Programador Java a 8 anos sendo especialista em desenvolvimento de aplicações Java EE utilizando objetos distribuidos e Swing.
Consultoria em Dúvidas - Http://www.forHelp.Us
Space do autor

download

3
0
