@GuilhermeSouza97 escreveu:
Estou com erros devido ao meu mapeamento para o meu programa em java, ainda estou começando a mexer com annotation (peço que perdoem possíveis erros estúpidos xD).
O erro deve estar no @ManyToOne/OneToMany...Possuo duas tabelas, CONTA e JOGADOR. Após criar uma conta, o usuario pode criar um ou mais jogadores, ou seja, uma conta pode ter vários jogadores, mas cada jogador pertence apenas a uma conta. Em meu BD eu criei uma chave estrangeira chamada ID_CONTA na tabela JOGADOR, para receber o ID da CONTA.
Alguém saberia me explicar como devo corrigir esse erro?
Erro:
Exception in thread "main" javax.persistence.PersistenceException: Unable to build entity manager factory at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:66) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:55) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:39) at Teste.main(Teste.java:10) Caused by: org.hibernate.AnnotationException: mappedBy reference an unknown target entity property: Jogador.Conta in Conta.jogador at org.hibernate.cfg.annotations.CollectionBinder.bindStarToManySecondPass(CollectionBinder.java:769) at org.hibernate.cfg.annotations.CollectionBinder$1.secondPass(CollectionBinder.java:719) at org.hibernate.cfg.CollectionSecondPass.doSecondPass(CollectionSecondPass.java:54) at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.processSecondPasses(InFlightMetadataCollectorImpl.java:1655) at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.processSecondPasses(InFlightMetadataCollectorImpl.java:1623) at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:278) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:847) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:874) at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:58) ... 3 more
Classe Conta:
import javax.persistence.CascadeType; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.OneToMany; @Entity public class Conta { @Id @GeneratedValue private int id; @OneToMany(cascade = CascadeType.ALL, mappedBy = "Jogador") @JoinColumn(name="idConta") private List <Jogador> jogador; private String email; private String senha; private String nome; //gets e sets }
Classe Jogador:
import java.util.List; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.ManyToOne; import javax.persistence.OneToMany; import javax.persistence.OneToOne; @Entity public class Jogador { @Id @GeneratedValue private int id; @JoinColumn(name="id_conta") private int idConta; private String nome; private int lvl; private int exp; private int corrupcao; private int ouro; private int força; @ManyToOne private Conta conta; //gets e sets }
Classe que esta executando(por hora, apenas na tabela Conta):
import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.EntityTransaction; import javax.persistence.Persistence; public class Teste { public static void main(String[] args) { EntityManagerFactory entity = Persistence.createEntityManagerFactory("persistence"); EntityManager em = entity.createEntityManager(); Conta c = new Conta(); //seleciona na tabela //c=em.find(Conta.class, 21l); //seta o nome ao obj c.setNome("joao"); c.setEmail("joao@email.com"); c.setSenha("123"); EntityTransaction tx = em.getTransaction(); tx.begin(); em.persist(c);// insert //em.merge(c);//update //em.remove(c);//delete tx.commit(); em.close(); entity.close(); } }
Mensagens: 4
Participantes: 2