2016-07-01 4 views
1

Ich bin neu bei der Arbeit mit JPA und Hibernate, also habe ich einige Probleme mit der Typquery. Ich habe eine Funktion, die eine Zeichenfolge und den Namen eines "Departamento" empfängt und das Objekt ("Carrera") abruft, dem dieses "Departamento" zugeordnet ist. In sqldeveloper habe ich kein Problem, aber in typedquery ist es ein bisschen mühsam geworden. Ich bin mir sicher, dass die Syntax meiner Abfrage falsch ist, aber ich weiß nicht, wie ich das beheben soll. Ich wäre dankbar, wenn mir jemand helfen könnte.java.lang.ClassNotFoundException: org.hibernate.collection.internal.PersistentBag - Nicht in der Lage, die Klasse zu finden, die ich suche

ClientePrueba.java:

public class ClientePrueba { 
    public static void main(String[] args) throws NamingException { 
     DepartamentosBeanRemote departamentosBean = (DepartamentosBeanRemote) InitialContext.doLookup("EjemploEJB/DepartamentosBean!com.servicios.DepartamentosBeanRemote"); 
     MateriasBeanRemote materiasBean = (MateriasBeanRemote) InitialContext.doLookup("EjemploEJB/MateriasBean!com.servicios.MateriasBeanRemote"); 
     CarrerasBeanRemote carrerasBean = (CarrerasBeanRemote) InitialContext.doLookup("EjemploEJB/CarrerasBean!com.servicios.CarrerasBeanRemote"); 

     System.out.println("Obtengo todas las carreras del departamento MATEMATICAS"); 
     List<Carrera> carreras = carrerasBean.obtenerPorDepartamento("MATEMATICAS"); 
     for (Carrera car : carreras) { 
      System.out.println(car.getNombre()); 
     }  
    } 
} 

CarrerasBean.java

/** 
* Session Bean implementation class CarrerasBean 
*/ 
@Stateless 
public class CarrerasBean implements CarrerasBeanRemote { 
    @PersistenceContext 
    private EntityManager em; 

    /** 
    * Default constructor. 
    */ 
    public CarrerasBean() { 
     // TODO Auto-generated constructor stub 
    } 

    @Override 
    public List<Carrera> obtenerPorDepartamento(String departamento) { 
     TypedQuery<Carrera> query = em.createQuery("SELECT c FROM Carrera c WHERE c.departamento.nombre = :depto", Carrera.class) 
       .setParameter("depto", departamento); 
     return query.getResultList(); 
    } 
} 

Fehler:

Exception in thread "main" javax.ejb.EJBException: java.lang.ClassNotFoundException: org.hibernate.collection.internal.PersistentBag at org.jboss.ejb.client.EJBInvocationHandler.doInvoke(EJBInvocationHandler.java:236) at org.jboss.ejb.client.EJBInvocationHandler.doInvoke(EJBInvocationHandler.java:181) at org.jboss.ejb.client.EJBInvocationHandler.invoke(EJBInvocationHandler.java:144) at com.sun.proxy.$Proxy4.obtenerPorDepartamento(Unknown Source) at com.cliente.ClientePrueba.main(ClientePrueba.java:130) Caused by: java.lang.ClassNotFoundException: org.hibernate.collection.internal.PersistentBag at java.net.URLClassLoader$1.run(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Unknown Source) at org.jboss.marshalling.AbstractClassResolver.loadClass(AbstractClassResolver.java:131) at org.jboss.marshalling.AbstractClassResolver.resolveClass(AbstractClassResolver.java:112) at org.jboss.marshalling.river.RiverUnmarshaller.doReadClassDescriptor(RiverUnmarshaller.java:949) at org.jboss.marshalling.river.RiverUnmarshaller.doReadNewObject(RiverUnmarshaller.java:1256) at org.jboss.marshalling.river.RiverUnmarshaller.doReadObject(RiverUnmarshaller.java:276) at org.jboss.marshalling.river.RiverUnmarshaller.doReadObject(RiverUnmarshaller.java:224) at org.jboss.marshalling.river.RiverUnmarshaller.readFields(RiverUnmarshaller.java:1746) at org.jboss.marshalling.river.RiverUnmarshaller.doInitSerializable(RiverUnmarshaller.java:1659) at org.jboss.marshalling.river.RiverUnmarshaller.doReadNewObject(RiverUnmarshaller.java:1286) at org.jboss.marshalling.river.RiverUnmarshaller.doReadObject(RiverUnmarshaller.java:276) at org.jboss.marshalling.river.RiverUnmarshaller.doReadObject(RiverUnmarshaller.java:224) at org.jboss.marshalling.river.RiverUnmarshaller.doReadCollectionObject(RiverUnmarshaller.java:180) at org.jboss.marshalling.river.RiverUnmarshaller.readCollectionData(RiverUnmarshaller.java:777) at org.jboss.marshalling.river.RiverUnmarshaller.doReadObject(RiverUnmarshaller.java:653) at org.jboss.marshalling.river.RiverUnmarshaller.doReadObject(RiverUnmarshaller.java:209) at org.jboss.marshalling.AbstractObjectInput.readObject(AbstractObjectInput.java:41) at org.jboss.ejb.client.remoting.MethodInvocationResponseHandler$MethodInvocationResultProducer.getResult(MethodInvocationResponseHandler.java:103) at org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:276) at org.jboss.ejb.client.EJBObjectInterceptor.handleInvocationResult(EJBObjectInterceptor.java:64) at org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:290) at org.jboss.ejb.client.EJBHomeInterceptor.handleInvocationResult(EJBHomeInterceptor.java:88) at org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:290) at org.jboss.ejb.client.TransactionInterceptor.handleInvocationResult(TransactionInterceptor.java:46) at org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:290) at org.jboss.ejb.client.ReceiverInterceptor.handleInvocationResult(ReceiverInterceptor.java:129) at org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:265) at org.jboss.ejb.client.EJBClientInvocationContext.awaitResponse(EJBClientInvocationContext.java:453) at org.jboss.ejb.client.EJBInvocationHandler.doInvoke(EJBInvocationHandler.java:202) ... 4 more

+0

Haben Sie alle Hibernate-Bibliotheken hinzugefügt? –

+0

Ich dachte, dass Wildfly alle Bibliotheken hatte? – user2912069

Antwort

0

Es sieht aus wie y Sie haben keine Winterschlafgläser im Client-Klassenpfad. Ich meine diese Abhängigkeit:

<groupId>org.hibernate</groupId> 
<artifactId>hibernate-core</artifactId> 

Ihren Kunden Classpath prüfen und dieses Hibernate Glas hinzufügen.

+0

ok, danke dir sehr. Ich werde das versuchen. – user2912069

Verwandte Themen