1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Erro no hibernate mapeamento de entidade

Olá pessoal,

Estou com o seguinte problema, tenho uma tabela que chave é uma string e uma foreign key de outra tabela. segue minha classe.

package br.com.desafiojava.model.pk;

import javax.persistence.Embeddable;

@Embeddable
public class VoteUserId{
   private String chaveUser;
   private long movieId;

   public VoteUserId() {}

   public VoteUserId(String chaveUser, long movieId) {
       this.chaveUser = chaveUser;
       this.movieId = movieId;
   }

    public final String getChaveUser() {
        return chaveUser;
    }

    public final void setChaveUser(String chaveUser) {
        this.chaveUser = chaveUser;
    }

    public final long getMovieId() {
        return movieId;
    }

    public final void setMovieId(long movieId) {
        this.movieId = movieId;
    }  

}

Essa é minha pk:

package br.com.desafiojava.model;

import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;

import br.com.desafiojava.model.pk.VoteUserId;

@Entity
public class VoteUser {

    @EmbeddedId
    private VoteUserId VoteUserId;

    @OneToOne
    @JoinColumn(name = "movieid", updatable=false , insertable=false)
    private Movie movieid;

    private int points;

    public final Movie getMovieid() {
        return movieid;
    }
    public final void setMovieid(Movie movieid) {
        this.movieid = movieid;
    }
    public final int getPoints() {
        return points;
    }
    public final void setPoints(int points) {
        this.points = points;
    }
    public final VoteUserId getVoteUserId() {
        return VoteUserId;
    }
    public final void setVoteUserId(VoteUserId voteUserId) {
        VoteUserId = voteUserId;
    }
}

O erro que o glassfish me apresenta é esse:

2014-02-13T16:12:35.801-0200|INFO: Unable to find org.hibernate.search.event.FullTextIndexEventListener on the classpath. Hibernate Search is not enabled.
2014-02-13T16:12:35.804-0200|INFO: Instantiated an instance of org.hibernate.validator.engine.resolver.JPATraversableResolver.
2014-02-13T16:12:35.903-0200|SEVERE: WebModule[/Desafio1BlueSoft]PWC1270: Exception starting filter JPAFilter
java.lang.InstantiationException
    at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:124)
    at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4625)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:5316)
    at com.sun.enterprise.web.WebModule.start(WebModule.java:500)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:917)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:901)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:755)
    at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1980)
    at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1630)
    at com.sun.enterprise.web.WebApplication.start(WebApplication.java:100)
    at org.glassfish.internal.data.EngineRef.start(EngineRef.java:130)
    at org.glassfish.internal.data.ModuleInfo.start(ModuleInfo.java:269)
    at org.glassfish.internal.data.ApplicationInfo.start(ApplicationInfo.java:286)
    at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:461)
    at com.sun.enterprise.v3.server.ApplicationLoaderService.processApplication(ApplicationLoaderService.java:364)
    at com.sun.enterprise.v3.server.ApplicationLoaderService.postConstruct(ApplicationLoaderService.java:208)
    at com.sun.hk2.component.AbstractCreatorImpl.inject(AbstractCreatorImpl.java:131)
    at com.sun.hk2.component.ConstructorCreator.initialize(ConstructorCreator.java:91)
    at com.sun.hk2.component.AbstractCreatorImpl.get(AbstractCreatorImpl.java:82)
    at com.sun.hk2.component.SingletonInhabitant.get(SingletonInhabitant.java:67)
    at com.sun.hk2.component.EventPublishingInhabitant.get(EventPublishingInhabitant.java:139)
    at com.sun.hk2.component.AbstractInhabitantImpl.get(AbstractInhabitantImpl.java:76)
    at com.sun.enterprise.v3.server.AppServerStartup.run(AppServerStartup.java:243)
    at com.sun.enterprise.v3.server.AppServerStartup.start(AppServerStartup.java:135)
    at com.sun.enterprise.glassfish.bootstrap.GlassFishImpl.start(GlassFishImpl.java:79)
    at com.sun.enterprise.glassfish.bootstrap.GlassFishMain$Launcher.launch(GlassFishMain.java:117)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at com.sun.enterprise.glassfish.bootstrap.GlassFishMain.main(GlassFishMain.java:97)
    at com.sun.enterprise.glassfish.bootstrap.ASMain.main(ASMain.java:55)
Caused by: javax.persistence.PersistenceException: [PersistenceUnit: DesafioJava] Unable to build EntityManagerFactory
    at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:892)
    at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:56)
    at javax.persistence.Persistence.createEntityManagerFactory(Unknown Source)
    at javax.persistence.Persistence.createEntityManagerFactory(Unknown Source)
    at br.com.desafiojava.filter.JPAFilter.init(JPAFilter.java:24)
    at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:266)
    at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:120)
    ... 31 more
Caused by: org.hibernate.MappingException: Could not determine type for: br.com.desafiojava.model.Movie, at table: VoteUser, for columns: [org.hibernate.mapping.Column(movieid)]
    at org.hibernate.mapping.SimpleValue.getType(SimpleValue.java:290)
    at org.hibernate.mapping.SimpleValue.isValid(SimpleValue.java:274)
    at org.hibernate.mapping.Property.isValid(Property.java:217)
    at org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:464)
    at org.hibernate.mapping.RootClass.validate(RootClass.java:236)
    at org.hibernate.cfg.Configuration.validate(Configuration.java:1193)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1378)
    at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:954)
    at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:883)
    ... 37 more
package br.com.desafiojava.model;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity 
public class Movie  {

    @GeneratedValue @Id
    private long id;

    private String name;

    private int points;

    public Movie() {

    }

    public final long getId() {
        return id;
    }

    public final void setId(long id) {
        this.id = id;
    }

    public final String getName() {
        return name;
    }

    public final void setName(String name) {
        this.name = name;
    }

    public final int getPoints() {
        return points;
    }

    public final void setPoints(int points) {
        this.points = points;
    }    
}
  • pelo jeito, o Hibernate não está enxergando a classe Movie, ela está anotada como entidade também ? coloca o código dela também

    Rodolfo Mendes   13 de fev de 2014
  • agora está dando esse erro: Declaring class is not found in the inheritance state hierarchy: br.com.desafiojava.model.pk.VoteUserId at org.hibernate.cfg.BinderHelper.getMappedSuperclassOrNull

    Thiago Hora   13 de fev de 2014
  • tem um detalhe importante, todas as entidades e embeddables precisam implementar Serializable se eu não me engano.

    Rodolfo Mendes   13 de fev de 2014
  • é eu fiz isso, mas sabe pq?

    Thiago Hora   14 de fev de 2014
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags hibernate glassfish ou faça a sua própria pergunta.