Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在JPA中分离关联对象_Jpa_Datanucleus_Detach - Fatal编程技术网

如何在JPA中分离关联对象

如何在JPA中分离关联对象,jpa,datanucleus,detach,Jpa,Datanucleus,Detach,我已使用em.clear()分离了所有实体,但我没有看到相关对象已分离?如何分离关联对象 I have a method as : public CustomerSurvey getSurveyByRequest(long requestNo) throws WorkServiceException { logger.debug("Inside getSurveyByRequest : " + requestNo); EntityManager em =

我已使用em.clear()分离了所有实体,但我没有看到相关对象已分离?如何分离关联对象

 I have a method as : 

 public CustomerSurvey getSurveyByRequest(long requestNo)
        throws WorkServiceException {
    logger.debug("Inside getSurveyByRequest : " + requestNo);
    EntityManager em = entityManagerFactory.createEntityManager();
    Query query = em.createNamedQuery("customerSurvey.findByRequest")
            .setParameter("srNo", requestNo);
    List<CustomerSurvey> surveys = query.getResultList();
    **em.clear();**
    em.close();
    return surveys.get(0);
}
错误消息:

调查=com.ge.dsp.iwork.entity。CustomerSurvey@36b88ea5 调查id=131 线程“SpringOsgiExtenderThread-134”org.springframework.beans.factory.BeanCreationException中出现异常:创建URL中定义了名为“testCloseRequest”的bean时出错[bundle://178.124:0/META-INF/spring/module- context.xml]:调用init方法失败;嵌套异常为javax.jdo.jdodetachedFeldAccessException:您刚刚尝试访问字段“customer”,但在您分离 对象不要访问此字段,或者在分离对象时将其分离。 位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1455) 位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) 位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) 位于org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294) 位于org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225) 位于org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291) 位于org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193) 位于org.springframework.beans.factory.support.DefaultListableBeanFactory.PreInstanceSingleton(DefaultListableBeanFactory.java:609) 位于org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:918) 位于org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext.access$1600(AbstractDelegatedExecutionApplicationContext.java:69) 位于org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext$4.run(AbstractDelegatedExecutionApplicationContext.java:355) 位于org.springframework.osgi.util.internal.PrivilegedUtils.executeWithCustomTCCL(PrivilegedUtils.java:85) 位于org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext.CompleteFresh(AbstractDelegatedExecutionApplicationContext.java:320) 位于org.springframework.osgi.extender.internal.dependencietraApplicationContextExecutor$CompleteRefreshTask.run(dependencyWaiteraApplicationContextExecutor.java:132) 运行(Thread.java:662) 原因:javax.jdo.jdocatedFeldAccessException:您刚刚尝试访问字段“customer”,但在分离对象时该字段未分离。请不要访问此字段,或者在 分离对象。 在com.ge.dsp.iwork.entity.CustomerSurvey.jdoGetcustomer(CustomerSurvey.java)上 在com.ge.dsp.iwork.entity.CustomerSurvey.getCustomer(CustomerSurvey.java:89)上 在com.ge.dsp.iwork.test.WorkServiceTest.testCloseRequest上(WorkServiceTest.java:181) 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处 位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)中 位于java.lang.reflect.Method.invoke(Method.java:597) 位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.InvokeCustominetMethod(AbstractAutowireCapableBeanFactory.java:1581) 位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1522) 位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1452)
... 另外14个

将分离当前加载的所有字段。您的字段没有被加载,并且您似乎没有访问它,因此它没有被加载,因此它没有被分离。显然,您可以访问它,或者让它变得急切,或者使用DataNucleus fetch groups扩展来加载它。您也可以查看日志以查看分离过程

在世界上哪里可以找到关于此的文档?
@Entity
@Table(name = "CUSTOMER_SURVEY", uniqueConstraints = { @UniqueConstraint(columnNames 
= "SERVEYID") })
@SequenceGenerator(name="CUSTOMER_SURVEY_SEQUENCE", 
sequenceName="CUSTOMER_SURVEY_SEQUENCE", initialValue=1, allocationSize=100)

@NamedQueries({
@NamedQuery(name="customerSurvey.findByRequest",
        query="SELECT survey FROM CustomerSurvey survey " +
                "WHERE survey.serviceRequest.srNo = :srNo")
})

public class CustomerSurvey implements Serializable {

@Id @GeneratedValue(strategy=GenerationType.SEQUENCE, 
generator="CUSTOMER_SURVEY_SEQUENCE")
@Column(name = "SURVEYID", nullable = false)
private String surveyId;

     @ManyToOne(fetch=FetchType.LAZY, cascade=CascadeType.DETACH)
@JoinColumn(name="CUSTNO", referencedColumnName="CustNO")
private Customer customer;

@Column(name="AVGRATINGS")
private int avgRatings;

@Column(name="COMMENTS")
private String comments;

@Column(name="SENTON")
private Date sentOn;

@Column(name="RESPONDEDON")
private Date respondedOn;

@OneToMany(fetch=FetchType.LAZY,mappedBy="customerSurvey")
private Set<SurveyResponse> responses;

@OneToOne(fetch=FetchType.LAZY)
@JoinColumn(name="SRNO")
private ServiceRequest serviceRequest;
CustomerSurvey survey = workService.getSurveyByRequest(request.getSrNo());
        System.out.println("survey = " + survey);
        System.out.println("survey id = " + survey.getSurveyId());
        System.out.println("survey customer = " + survey.getCustomer());