2010-09-12 6 views
1

Im apprenant JPA et ayant des problèmes, im en utilisant des choses de génération d'entité (trop fatigué, ne peux pas penser au nom) dans mon fichier de persistance de sorte que mes entités sont jusqu'à zéro. Mais j'ai des problèmes pour les rejoindre.JPA entité rejoignant les questions (je pense)

mon problème est que je ne pense pas im se joindre aux entitys correctement

Exception

javax.servlet.ServletException: java.lang.reflect.InvocationTargetException at org.glassfish.webservices.monitoring.WebServiceTesterServlet.doPost(WebServiceTesterServlet.java:326) at org.glassfish.webservices.monitoring.WebServiceTesterServlet.invoke(WebServiceTesterServlet.java:102) at org.glassfish.webservices.EjbWebServiceServlet.service(EjbWebServiceServlet.java:110) at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) at com.sun.grizzly.http.servlet.FilterChainImpl.doFilter(FilterChainImpl.java:195) at com.sun.grizzly.http.servlet.FilterChainImpl.invokeFilterChain(FilterChainImpl.java:139) at com.sun.grizzly.http.servlet.ServletAdapter.doService(ServletAdapter.java:376) at com.sun.grizzly.http.servlet.ServletAdapter.service(ServletAdapter.java:329) at com.sun.grizzly.tcp.http11.GrizzlyAdapter.service(GrizzlyAdapter.java:166) at com.sun.enterprise.v3.server.HK2Dispatcher.dispath(HK2Dispatcher.java:100) at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:245) at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:791) at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:693) at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:954) at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:170) at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135) at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102) at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88) at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76) at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53) at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57) at com.sun.grizzly.ContextTask.run(ContextTask.java:69) at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:330) at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:309) at java.lang.Thread.run(Thread.java:619) Caused by: java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.glassfish.webservices.monitoring.WebServiceTesterServlet.doPost(WebServiceTesterServlet.java:297) ... 24 more Caused by: com.sun.xml.ws.streaming.XMLStreamReaderException: unexpected XML tag. expected: {http://test.com/}getDepartmentResponse but found: {http://schemas.xmlsoap.org/soap/envelope/}Envelope at com.sun.xml.ws.streaming.XMLStreamReaderUtil.verifyTag(XMLStreamReaderUtil.java:214) at com.sun.xml.ws.streaming.XMLStreamReaderUtil.verifyTag(XMLStreamReaderUtil.java:222) at com.sun.xml.ws.client.sei.ResponseBuilder$DocLit.readResponse(ResponseBuilder.java:546) at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:121) at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:89) at com.sun.xml.ws.client.sei.SEIStub.invoke(SEIStub.java:140) at $Proxy362.getDepartment(Unknown Source) ... 29 more 
    org.eclipse.persistence.internal.jpa.EntityManagerImpl.findInternal(EntityManagerImpl.java 
    :647) at 
    org.eclipse.persistence.internal.jpa.EntityManagerImpl.find(EntityManagerImpl.java:581) at 
    org.eclipse.persistence.internal.jpa.EntityManagerImpl.find(EntityManagerImpl.java:460) 

    com.sun.enterprise.container.common.impl.EntityManagerWrapper.find(EntityManagerWrapper.ja 
    va:309) at com.test.TestBean.getDepartment(TestBean.java:126) 
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at 
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at 
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at 
    java.lang.reflect.Method.invoke(Method.java:597) at 
    org.glassfish.ejb.security.application.EJBSecurityManager.runMethod(EJBSecurityManager.jav 
    a:1056) at 
    org.glassfish.ejb.security.application.EJBSecurityManager.invoke(EJBSecurityManager.java:1 
    128) at com.sun.ejb.containers.BaseContainer.invokeBeanMethod(BaseContainer.java:5292) at 
    com.sun.ejb.EjbInvocation.invokeBeanMethod(EjbInvocation.java:615) at 
    com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.ja 
    va:797) at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:567) 
    com.sun.ejb.containers.interceptors.SystemInterceptorProxy.doAround(SystemInterceptorProxy 
    .java:157) 
    com.sun.ejb.containers.interceptors.SystemInterceptorProxy.aroundInvoke(SystemInterceptorP 
    roxy.java:139) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at 
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    java.lang.reflect.Method.invoke(Method.java:597) at 
    com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.j 
    ava:858) 
    com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.ja 
    va:797) at 
    com.sun.ejb.containers.interceptors.InterceptorManager.intercept(InterceptorManager.java:3 
    67) at com.sun.ejb.containers.BaseContainer.__intercept(BaseContainer.java:5264) at 
    com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:5252) 
    com.sun.ejb.containers.WebServiceInvocationHandler.invoke(WebServiceInvocationHandler.java 
    :188) ... 66 more 

Appelé De (avec em est injecté dans le haricot)

public Department getDepartment(int id){ 
    Department dep = null; 
    dep = em.find(Department.class,id); 
return dep; 
} 

Département

package com.test1; 

import java.util.List; 

import javax.persistence.Entity; 
import javax.persistence.Id; 
import javax.persistence.OneToMany; 
import javax.persistence.OrderBy; 

@Entity 
public class Department { 

@Id 
private int id; 
private String name; 

@OneToMany(mappedBy="department") 
@OrderBy("name ASC") 
private List<Employee> employees; 

public int getId() { 
    return id; 
} 

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

public String getName() { 
    return name; 
} 

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

public List<Employee> getEmployees() { 
    return employees; 
} 

public void setEmployees(List<Employee> employees) { 
    this.employees = employees; 
} 
} 

employé

package com.test1; 

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

@Entity 
public class Employee { 
@Id private int id; 
private String name; 
private long salary; 

private Department department; 

public int getId() { 
    return id; 
} 
public void setId(int id) { 
    this.id = id; 
} 
public String getName() { 
    return name; 
} 
public void setName(String name) { 
    this.name = name; 
} 
public long getSalary() { 
    return salary; 
} 
public void setSalary(long salary) { 
    this.salary = salary; 
} 
public void setDepartment(Department department) { 
    this.department = department; 
} 
public Department getDepartment() { 
    return department; 
} 
} 

Persistance

<?xml version="1.0" encoding="UTF-8"?> 
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"> 
    <persistence-unit name="testConnection" transaction-type="RESOURCE_LOCAL"> 
     <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> 

     <jta-data-source>jdbc/testingManagment</jta-data-source> 
     <non-jta-data-source>jdbc/testingManagment</non-jta-data-source> 

     <class>com.test1.Employee</class> 
     <class>com.test1.Department</class> 

     <properties>    
      <!-- maintains a most frequently used subcache that uses soft references --> 
      <property name="eclipselink.cache.type.default" value="SoftWeak"/> 
      <!-- makes cashe accsessable to other clients attached to the session --> 
      <property name="eclipselink.cache.shared.default" value="true"/> 
      <property name="eclipselink.flush-clear.cache" value="Drop"/> 


      <!-- JDBC definition --> 
      <property name="eclipselink.jdbc.driver" value="oracle.jdbc.driver.OracleDriver" /> 
      <property name="eclipselink.jdbc.url" value="jdbc:oracle:thin:@localhost:1521:xe" /> 
      <property name="eclipselink.jdbc.user" value="system" /> 
      <property name="eclipselink.jdbc.password" value="nightmare11" /> 

      <property name="eclipselink.jdbc.read-connections.min" value="1" /> 
      <property name="eclipselink.jdbc.write-connections.min" value="1" /> 
      <property name="eclipselink.jdbc.batch-writing" value="JDBC" /> 

      <!-- Logging --> 
      <property name="eclipselink.logging.level" value="FINE" /> 
      <property name="eclipselink.logging.timestamp" value="false" /> 
      <property name="eclipselink.logging.session" value="false" /> 
      <property name="eclipselink.logging.thread" value="false" /> 

      <!-- Table Creation Stuff --> 
      <property name="eclipselink.ddl-generation" value="drop-and-create-tables"/> 
      <property name="eclipselink.ddl-generation.output-mode" value="both"/> 
      <property name="eclipselink.application-location" value="generatedSQL"/> 
      <!-- --> 
     </properties> 

    </persistence-unit> 
</persistence> 

Si quelqu'un peut me donner un coup de main qui serait incroyable Merci encore Jon

+0

persistance ajouté, merci de jeter un oeil Bozho – Jon

Répondre

1

Votre clé primaire (marqué par @Id) est int, et vous essayez de passer Long à em.find(..) - passez int à la place.

+0

j'ai changé ce peu (ne peux pas croire que je l'ai manqué), malheureusement mal à obtenir une erreur. je vais essayer et ammend ce qui précède – Jon

0

Il semble que vous utilisiez le service Web et que le contenu de la réponse ne corresponde pas au WSDL.

Causée par: com.sun.xml.ws.streaming.XMLStreamReaderException: balise XML inattendue. attendu: {} http://test.com/ getDepartmentResponse mais a trouvé: {} http://schemas.xmlsoap.org/soap/envelope/ enveloppe

Comment construisez-vous la réponse?