【问题标题】:WebService - could not initialize proxy - no SessionWebService - 无法初始化代理 - 没有会话
【发布时间】:2016-11-23 10:32:54
【问题描述】:

我尝试通过 WebService 从我的数据库中获取数据列表。我使用 Spring 和 Hibernate 我读过一些话题,比如 ThisThis

所以我尝试将一些 Transactionnal 放在类的顶部、我的方法等上,但不起作用,或者我没有用正确的参数将正确的东西放在正确的位置。

谢谢,如果语法不好,请见谅

编辑: 我认为问题来自我的类​​ Personne,它在惰性模式下与许多其他实体建立了链接,这是在网络服务上说的意思吗,当我返回对象时我不在乎这个链接?或者说全部获取

这是我的服务,接口只有@WebService注解

@WebService(endpointInterface = "eu.enslyon.stella.service.CasMessageService") @Service("CasMessageService") @Transactional(隔离 = Isolation.DEFAULT,传播 = Propagation.REQUIRED) 公共类 CasMessageServiceImpl 实现 CasMessageService { 私有瞬态 Logger logger = LoggerFactory.getLogger(getClass()); @自动连线 @Qualifier("CasMessageDao") 受保护的 CasMessageDao casMessageDao; @自动连线 @Qualifier("IndividuUlrService") 受保护的 IndividuUlrService individuUlrService; @覆盖 @Transactional(readOnly = true) 公共列表获取(字符串 pLogin){ BigDecimal persId = individuUlrService.getPersIdFromLogin(pLogin); 返回 casMessageDao.get(persId); } }

我的DAO,接口没有任何注解:

@Repository("CasMessageDao") @Transactional(隔离 = Isolation.DEFAULT,传播 = Propagation.REQUIRED) 公共类 CasMessageDaoImpl 扩展 AbstractJpaDao 实现 CasMessageDao,java.io.Serializable { /** */ 私有最终静态列表> dataTypes = new ArrayList>( Arrays.asList(new Class[] { IndividuUlr.class })); /** */ 私有静态瞬态 Logger logger = LoggerFactory.getLogger(CasMessageDaoImpl.class); /** */ @PersistenceContext(unitName = "grhum") 私有实体管理器实体管理器; /** */ 公共 CasMessageDaoImpl() { 极好的(); } /** * * @return 列表> */ 公共列表> getDataTypes() { 返回数据类型; } /** * * @return 实体管理器 */ 公共实体管理器 getEntityManager() { 返回实体管理器; } @覆盖 公共列表获取(BigDecimal persId){ CriteriaBuilder cBuilder = entityManager.getCriteriaBuilder(); CriteriaQuery criteriaQuery = cBuilder.createQuery(CasMessage.class); 根 lRoot = criteriaQuery.from(CasMessage.class); 加入 lJoinTypeMessage = lRoot.join("typeCasMessage", JoinType.LEFT); 加入 lJoinPersonne = lRoot.join("detailPersonne", JoinType.LEFT).join("personne", 加入类型.LEFT); lRoot.fetch("typeCasMessage"); lRoot.fetch("detailPersonne").fetch("personne"); criteriaQuery.where(cBuilder.and(cBuilder.isNull(lRoot.get("dEnd")), cBuilder.lessThanOrEqualTo(lRoot.get("countignore"), lJoinTypeMessage。得到(“nbAffichage”)), cBuilder.equal(lJoinPersonne.get("persId"), persId))); 查询查询 = entityManager.createQuery(criteriaQuery); 列表 lRes = query.getResultList(); 返回 lRes; } }

我的实体:

@实体 @Table(名称=“CAS_MESSAGE”,模式=“STELLA”) 公共类 CasMessage 实现 java.io.Serializable { 私人 int idCasMessage; 私人 TypeCasMessage typeCasMessage; 私人日期 dStart; 私人日期 dUpdate; 私人日期 dEnd; 私人int countignore; 私人 DetailPersonne detailPersonne; @覆盖 公共字符串 toString() { return "CasMessage [idCasMessage=" + idCasMessage + ", dStart=" + dStart + ", dUpdate=" + dUpdate + ", dEnd=" + dEnd + ", countignore=" + countignore + ", detailPersonne=" + detailPersonne + "]"; } 公共CasMessage(){ } @ID @GeneratedValue(策略= GenerationType.SEQUENCE,生成器=“CAS_MESSAGE_SEQ”) @SequenceGenerator(sequenceName = "STELLA.CAS_MESSAGE_SEQ", name = "CAS_MESSAGE_SEQ", allocationSize = 1) @Column(name = "ID_CAS_MESSAGE", unique = true, nullable = false, precision = 8, scale = 0) 公共 int getIdCasMessage() { 返回 idCasMessage; } 公共无效 setIdCasMessage(int idCasMessage) { this.idCasMessage = idCasMessage; } @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "ID_TYPE_CAS_MESSAGE") 公共类型CasMessage getTypeCasMessage(){ 返回类型CasMessage; } 公共无效 setTypeCasMessage(TypeCasMessage typeCasMessage) { this.typeCasMessage = typeCasMessage; } @Temporal(TemporalType.TIMESTAMP) @Column(名称 = “D_START”,长度 = 7) 公共日期 getdStart() { 返回 dStart; } 公共无效 setdStart(日期 dStart){ this.dStart = dStart; } @Temporal(TemporalType.TIMESTAMP) @Column(name = "D_UPDATE", 长度 = 7) 公共日期 getdUpdate() { 返回 dUpdate; } 公共无效 setdUpdate(日期 dUpdate){ this.dUpdate = dUpdate; } @Temporal(TemporalType.TIMESTAMP) @Column(name = "D_END", 长度 = 7) 公共日期 getdEnd() { 返回 dEnd; } 公共无效 setdEnd(日期 dEnd){ this.dEnd = dEnd; } @Column(name = "COUNTIGNORE", unique = true, nullable = false, precision = 8, scale = 0) 公共 int getCountignore() { 返回countignore; } 公共无效setCountignore(int countignore){ this.countignore = countignore; } @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "PERS_ID") 公共 DetailPersonne getDetailPersonne() { 返回 this.detailPersonne; } 公共无效 setDetailPersonne(DetailPersonne detailPersonne){ this.detailPersonne = detailPersonne; } } @实体 @Table(name = "TYPE_CAS_MESSAGE", schema = "STELLA") 公共类 TypeCasMessage 实现 java.io.Serializable { 私有 int idTypeCasMessage; 私人字符串消息; 私人字符串网址; 私人 int nbJour; 私人 int nbAffichage; 公共类型CasMessage(){ } @覆盖 公共字符串 toString() { 返回 "TypeCasMessage [idTypeCasMessage=" + idTypeCasMessage + ", message=" + message + ", url=" + url + ", nbJour=" + nbJour + ", nbAffichage=" + nbAffichage + "]"; } @ID @GeneratedValue(策略= GenerationType.SEQUENCE,生成器=“TYPE_CAS_MESSAGE_SEQ”) @SequenceGenerator(sequenceName = "STELLA.TYPE_CAS_MESSAGE_SEQ", name = "TYPE_CAS_MESSAGE_SEQ", allocationSize = 1) @Column(name = "ID_TYPE_CAS_MESSAGE", unique = true, nullable = false, precision = 8, scale = 0) 公共 int getIdTypeCasMessage() { 返回 idTypeCasMessage; } 公共无效 setIdTypeCasMessage(int idTypeCasMessage) { this.idTypeCasMessage = idTypeCasMessage; } @Column(name = "MESSAGE") @高球 公共字符串 getMessage() { 返回消息; } 公共无效setMessage(字符串消息){ this.message = 消息; } @Column(名称 = “URL”,长度 = 500) 公共字符串 getUrl() { 返回网址; } 公共无效setUrl(字符串网址){ 这个.url = url; } @Column(name = "NB_JOUR", unique = true, nullable = false, precision = 8, scale = 0) 公共 int getNbJour() { 返回 nbJour; } 公共无效 setNbJour(int nbJour) { 这.nbJour = nbJour; } @Column(name = "NB_AFFICHAGE", unique = true, nullable = false, precision = 8, scale = 0) 公共 int getNbAffichage() { 返回nbAffichage; } 公共无效 setNbAffichage(int nbAffichage) { this.nbAffichage = nbAffichage; } }

追踪:

org.apache.cxf.interceptor.Fault:编组错误:无法初始化代理 - 没有会话 在 org.apache.cxf.jaxb.JAXBEncoderDecoder.marshall(JAXBEncoderDecoder.java:249) 在 org.apache.cxf.jaxb.io.DataWriterImpl.write(DataWriterImpl.java:169) 在 org.apache.cxf.interceptor.AbstractOutDatabindingInterceptor.writeParts(AbstractOutDatabindingInterceptor.java:111) 在 org.apache.cxf.interceptor.BareOutInterceptor.handleMessage(BareOutInterceptor.java:68) 在 org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:243) 在 org.apache.cxf.interceptor.OutgoingChainInterceptor.handleMessage(OutgoingChainInterceptor.java:78) 在 org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:243) 在 org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:110) 在 org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestination.java:98) 在 org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:423) 在 org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:178) 在 org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:142) 在 org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:179) 在 org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:103) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:650) 在 org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:159) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 在 org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:311) 在 org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:116) 在 org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83) 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323) 在 org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113) 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323) 在 org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:101) 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323) 在 org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:113) 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323) 在 org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54) 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323) 在 org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:45) 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323) 在 org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:182) 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323) 在 org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105) 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323) 在 org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87) 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323) 在 org.springframework.security.web.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:144) 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323) 在 org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:173) 在 org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346) 在 org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) 在 org.apache.catalina.core.StandardContextValve.__invoke(StandardContextValve.java:122) 在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java) 在 org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505) 在 org.apache.catalina.core.StandardHostValve.__invoke(StandardHostValve.java:170) 在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java) 在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) 在 org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956) 在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423) 在 org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079) 在 org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625) 在 org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 在 org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 在 java.lang.Thread.run(Thread.java:745) 引起:org.hibernate.LazyInitializationException:无法初始化代理 - 没有会话 在 org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:165) 在 org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:286) 在 org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:185) 在 eu.enslyon.stella.model.CarteCumul_$$_jvst22d_7.getDDebResto(CarteCumul_$$_jvst22d_7.java) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:497) 在 com.sun.xml.bind.v2.runtime.reflect.Accessor$GetterSetterReflection.get(Accessor.java:347) 在 com.sun.xml.bind.v2.runtime.reflect.Accessor.getUnadapted(Accessor.java:149) 在 com.sun.xml.bind.v2.runtime.reflect.TransducedAccessor$CompositeTransducedAccessorImpl.hasValue(TransducedAccessor.java:247) 在 com.sun.xml.bind.v2.runtime.property.SingleElementLeafProperty.serializeBody(SingleElementLeafProperty.java:98) 在 com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImpl.java:340) 在 com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:696) 在 com.sun.xml.bind.v2.runtime.property.SingleElementNodeProperty.serializeBody(SingleElementNodeProperty.java:152) 在 com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImpl.java:340) 在 com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:696) 在 com.sun.xml.bind.v2.runtime.property.SingleElementNodeProperty.serializeBody(SingleElementNodeProperty.java:152) 在 com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImpl.java:340) 在 com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:696) 在 com.sun.xml.bind.v2.runtime.property.ArrayElementNodeProperty.serializeItem(ArrayElementNodeProperty.java:65) 在 com.sun.xml.bind.v2.runtime.property.ArrayElementProperty.serializeListBody(ArrayElementProperty.java:168) 在 com.sun.xml.bind.v2.runtime.property.ArrayERProperty.serializeBody(ArrayERProperty.java:155) 在 com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImpl.java:340) 在 com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:696) 在 com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl$1.serializeBody(ElementBeanInfoImpl.java:152) 在 com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl$1.serializeBody(ElementBeanInfoImpl.java:189) 在 com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeBody(ElementBeanInfoImpl.java:316) 在 com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeRoot(ElementBeanInfoImpl.java:323) 在 com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeRoot(ElementBeanInfoImpl.java:72) 在 com.sun.xml.bind.v2.runtime.XMLSerializer.childAsRoot(XMLSerializer.java:494) 在 com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:315) 在 com.sun.xml.bind.v2.runtime.MarshallerImpl.marshal(MarshallerImpl.java:244) 在 javax.xml.bind.helpers.AbstractMarshallerImpl.marshal(AbstractMarshallerImpl.java:95) 在 org.apache.cxf.jaxb.JAXBEncoderDecoder.writeObject(JAXBEncoderDecoder.java:532) 在 org.apache.cxf.jaxb.JAXBEncoderDecoder.marshall(JAXBEncoderDecoder.java:222) ... 64 更多
Conf for Entity Manager
<pre>

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:aop="http://www.springframework.org/schema/aop" xmlns:jee="http://www.springframework.org/schema/jee"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:security="http://www.springframework.org/schema/security"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
      http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
      http://www.springframework.org/schema/aop
      http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
      http://www.springframework.org/schema/tx
      http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
      http://www.springframework.org/schema/context 
      http://www.springframework.org/schema/context/spring-context-3.1.xsd
      http://www.springframework.org/schema/jee
      http://www.springframework.org/schema/jee/spring-jee-3.1.xsd
      http://www.springframework.org/schema/security 
      http://www.springframework.org/schema/security/spring-security-3.1.xsd">


<bean id="propertyConfigurer"
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="location" value="classpath:config.properties" />
</bean>

<!-- Atomikos Transaction Manager -->
<bean id="atomikosTransactionManager" class="com.atomikos.icatch.jta.UserTransactionManager"
    init-method="init" destroy-method="close">
    <property name="forceShutdown" value="true" />
    <property name="startupTransactionService" value="true" />
    <property name="transactionTimeout" value="3600" />
</bean>

<bean id="atomikosUserTransaction" class="com.atomikos.icatch.jta.UserTransactionImp" />

<!-- JTA transactions from Atomikos -->
<bean id="transactionManager"
    class="org.springframework.transaction.jta.JtaTransactionManager">
    <property name="transactionManager" ref="atomikosTransactionManager" />
    <property name="userTransaction" ref="atomikosUserTransaction" />
    <property name="transactionSynchronizationName" value="SYNCHRONIZATION_ON_ACTUAL_TRANSACTION" />

</bean>
<!-- Atomikos Data Sources -->
<bean name="grhumDS" class="com.atomikos.jdbc.nonxa.AtomikosNonXADataSourceBean">
    <property name="uniqueResourceName" value="[VALUE]" />
    <property name="url" value="${grhum.connection.url}" />
    <property name="user" value="${grhum.connection.username}" />
    <property name="password" value="${grhum.connection.password}" />
    <property name="driverClassName" value="${grhum.connection.driver_class}" />
    <property name="maxPoolSize" value="150" />
    <property name="borrowConnectionTimeout" value="30" />

</bean>
<bean name="protecDS" class="com.atomikos.jdbc.nonxa.AtomikosNonXADataSourceBean">
    <property name="uniqueResourceName" value="[VALUE]" />
    <property name="url" value="${protec.connection.url}" />
    <property name="user" value="${protec.connection.username}" />
    <property name="password" value="${protec.connection.password}" />
    <property name="driverClassName" value="${protec.connection.driver_class}" />
    <property name="maxPoolSize" value="150" />
    <property name="borrowConnectionTimeout" value="30" />
</bean>

<bean name="sesameDS" class="com.atomikos.jdbc.nonxa.AtomikosNonXADataSourceBean">
    <property name="uniqueResourceName" value="[VALUE]" />
    <property name="url" value="${sesame.connection.url}" />
    <property name="user" value="${sesame.connection.username}" />
    <property name="password" value="${sesame.connection.password}" />
    <property name="driverClassName" value="${sesame.connection.driver_class}" />
    <property name="maxPoolSize" value="150" />
    <property name="borrowConnectionTimeout" value="30" />
</bean>


<!-- vendor adapter -->
<bean id="grhumJPAVendorAdapter"
    class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
    <property name="showSql" value="${grhum.show_sql}" />
    <property name="generateDdl" value="${grhum.generateDdl}" />
    <property name="databasePlatform" value="${grhum.dialect}" />
</bean>
<bean id="protecJPAVendorAdapter"
    class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
    <property name="showSql" value="${protec.show_sql}" />
    <property name="generateDdl" value="${protec.generateDdl}" />
    <property name="databasePlatform" value="${protec.dialect}" />
</bean>

<bean id="sesameJPAVendorAdapter"
    class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
    <property name="showSql" value="${sesame.show_sql}" />
    <property name="generateDdl" value="${sesame.generateDdl}" />
    <property name="databasePlatform" value="${sesame.dialect}" />
</bean>

<bean id="grhum"
    class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="dataSource" ref="grhumDS" />
    <property name="persistenceUnitName" value="grhum" />

    <property name="jpaVendorAdapter" ref="grhumJPAVendorAdapter" />
    <property name="jpaPropertyMap">
        <map>
            <entry key="hibernate.transaction.manager_lookup_class"
                value="com.atomikos.icatch.jta.hibernate3.TransactionManagerLookup" />
            <entry key="hibernate.connection.release_mode" value="on_close" />
            <entry key="hibernate.search.default.indexBase" value="${catalina.base}/tmp/indexes" />
            <entry key="hibernate.transaction.jta.platform"
                value="com.atomikos.icatch.jta.hibernate4.AtomikosPlatform" />
        </map>
    </property>
    <property name="packagesToScan" value="eu.enslyon.stella.model" />

</bean>

<bean id="protec"
    class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="dataSource" ref="protecDS" />
    <property name="persistenceUnitName" value="protec" />

    <property name="jpaVendorAdapter" ref="protecJPAVendorAdapter" />
    <property name="jpaPropertyMap">
        <map>
            <entry key="hibernate.transaction.manager_lookup_class"
                value="com.atomikos.icatch.jta.hibernate3.TransactionManagerLookup" />
            <entry key="hibernate.connection.release_mode" value="on_close" />
            <entry key="hibernate.search.default.indexBase" value="${catalina.base}/tmp/indexes" />
            <entry key="hibernate.transaction.jta.platform"
                value="com.atomikos.icatch.jta.hibernate4.AtomikosPlatform" />
        </map>
    </property>
    <property name="packagesToScan" value="eu.enslyon.stella.model.protec" />

</bean>


<bean id="sesame"
    class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="dataSource" ref="sesameDS" />
    <property name="persistenceUnitName" value="sesame" />
    <property name="jpaVendorAdapter" ref="sesameJPAVendorAdapter" />
    <property name="jpaPropertyMap">
        <map>
            <entry key="hibernate.transaction.manager_lookup_class"
                value="com.atomikos.icatch.jta.hibernate3.TransactionManagerLookup" />
            <entry key="hibernate.connection.release_mode" value="on_close" />
            <entry key="hibernate.search.default.indexBase" value="${catalina.base}/tmp/indexes" />
            <entry key="hibernate.transaction.jta.platform"
                value="com.atomikos.icatch.jta.hibernate4.AtomikosPlatform" />
        </map>
    </property>
</bean>

</beans>

【问题讨论】:

  • 我们可以看看配置文件,你是如何创建 EM 的,顺便说一句,为什么要使用嵌套事务?有没有具体的用例
  • 我已经添加了,我想就是这样。对于“@Transactional(readOnly = true)”,它只是我的一个测试的剩余部分,抱歉。另一方面,在其他情况下,我只是 c/c 我老板的代码。我是 2 个月以来的实习生,在此期间学习了这项技术,所以我在很多方面都很菜鸟:/

标签: spring apache hibernate web-services cxf


【解决方案1】:

我已经通过将“@XmlTransient”放在上面来解决这个问题:

@XmlTransient @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "PERS_ID") 公共 DetailPersonne getDetailPersonne() { 返回 this.detailPersonne; }

CXF: how to exclude some properties when object sent through SOAP?

我不明白是 CXF 序列化了我的对象并且没有休眠,所以我用坏词搜索,什么也没找到

【讨论】:

    【解决方案2】:

    我有完全相同的错误。问题是肥皂响应的对象与持久/附加的集合有链接。并且在编组期间会导致延迟加载异常。我们在转换器中解决了这个问题,只需创建集合的副本。例如:

    有错误的旧代码

    soapResponseDto.setBookTypes(entity.getBookTypes);
    

    新的固定代码

    soapReponseDto.setBookType(new ArrayList<>(entity.getBookTypes));
    

    所以你需要检查soap响应DTO类不包含来自实体的任何类。

    【讨论】:

      猜你喜欢
      • 2012-03-24
      • 2013-03-03
      • 1970-01-01
      • 2012-11-09
      • 2018-09-28
      相关资源
      最近更新 更多