我有实体和带有集合的dto以及oneToMany / manyToOne双向关系
例如:
public class Author implements Serializable {
private int id;
private String firstname;
@OneToMany(mappedBy = "author")
private Collection<Book> bookList;
//GETTERS/SETTERS
}
public class Book implements Serializable {
@ManyToOne
@JoinColumn(name = "author_id", referencedColumnName = "id", nullable = false, insertable = false, updatable = false)
private Author author;
@ManyToOne
@JoinColumn(name = "categorie_id", referencedColumnName = "id", nullable = false, insertable = false, updatable = false)
private Categorie categorie;
@OneToMany(mappedBy = "book")
private Collection<Edition> editionList;
//GETTERS/SETTERS
}
public class Categorie implements Serializable {
private String name;
@OneToMany(mappedBy = "categorie")
private Collection<Book> bookList;
//GETTERS/SETTERS
}
我使用ModelMapper:
modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
modelMapper.getConfiguration().setFieldAccessLevel(Configuration.AccessLevel.PRIVATE);
modelMapper.getConfiguration().setFieldMatchingEnabled(true);
但是当我尝试将集合和实体映射到DTO时,出现错误。
ModelMapper映射错误:
1)将org.library.webservice.model.Author映射到org.library.webservice.generation.AuthorDTO错误
1个错误 org.modelmapper.MappingException:ModelMapper映射错误:
1)将org.library.webservice.model.Author映射到org.library.webservice.generation.AuthorDTO错误
1个错误 org.modelmapper.internal.Errors.throwMappingExceptionIfErrorsExist(Errors.java:374) 在 org.modelmapper.internal.MappingEngineImpl.map(MappingEngineImpl.java:69) 在org.modelmapper.ModelMapper.mapInternal(ModelMapper.java:497)处 org.modelmapper.ModelMapper.map(ModelMapper.java:340)在 org.library.webservice.MapperUtils.map(MapperUtils.java:29)位于 org.library.webservice.MapperUtils.lambda $ map $ 0(MapperUtils.java:38) 在 java.util.stream.ReferencePipeline $ 3 $ 1.accept(ReferencePipeline.java:193) 在 java.util.ArrayList $ ArrayListSpliterator.forEachRemaining(ArrayList.java:1374) 在 java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481) 在 java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471) 在 java.util.stream.ReduceOps $ ReduceOp.evaluateSequential(ReduceOps.java:708) 在 java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) 在 java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499) 在org.library.webservice.MapperUtils.map(MapperUtils.java:38)处 org.library.webservice.AbstractService.findAll(AbstractService.java:25) 在 org.library.webservice.service.AuthorService.findAllAuthor(AuthorService.java:27) 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在java.lang.reflect.Method.invoke(Method.java:498)在 org.glassfish.webservices.InstanceResolverImpl $ 1.invoke(InstanceResolverImpl.java:144) 在com.sun.xml.ws.server.InvokerTube $ 2.invoke(InvokerTube.java:149) 在 com.sun.xml.ws.server.sei.SEIInvokerTube.processRequest(SEIInvokerTube.java:88) 在com.sun.xml.ws.api.pipe.Fiber .__ doRun(Fiber.java:1136)处 com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:1050)在 com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:1019)在 com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:877)在 com.sun.xml.ws.api.pipe.helper.AbstractTubeImpl.process(AbstractTubeImpl.java:136) 在 org.glassfish.webservices.MonitoringPipe.process(MonitoringPipe.java:142) 在 com.sun.xml.ws.api.pipe.helper.PipeAdapter.processRequest(PipeAdapter.java:119) 在com.sun.xml.ws.api.pipe.Fiber .__ doRun(Fiber.java:1136)处 com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:1050)在 com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:1019)在 com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:877)在 com.sun.xml.ws.api.pipe.helper.AbstractTubeImpl.process(AbstractTubeImpl.java:136) 在 com.sun.enterprise.security.webservices.CommonServerSecurityPipe.processRequest(CommonServerSecurityPipe.java:209) 在 com.sun.enterprise.security.webservices.CommonServerSecurityPipe.process(CommonServerSecurityPipe.java:141) 在 com.sun.xml.ws.api.pipe.helper.PipeAdapter.processRequest(PipeAdapter.java:119) 在com.sun.xml.ws.api.pipe.Fiber .__ doRun(Fiber.java:1136)处 com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:1050)在 com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:1019)在 com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:877)在 com.sun.xml.ws.server.WSEndpointImpl $ 2.process(WSEndpointImpl.java:419) 在 com.sun.xml.ws.transport.http.HttpAdapter $ HttpToolkit.handle(HttpAdapter.java:868) 在 com.sun.xml.ws.transport.http.HttpAdapter.handle(HttpAdapter.java:422) 在 com.sun.xml.ws.transport.http.servlet.ServletAdapter.handle(ServletAdapter.java:169) 在 org.glassfish.webservices.JAXWSServlet.doPost(JAXWSServlet.java:169) 在javax.servlet.http.HttpServlet.service(HttpServlet.java:706)处 javax.servlet.http.HttpServlet.service(HttpServlet.java:791)在 org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1580) 在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:258) 在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160) 在 org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:652) 在 org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:591) 在com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99)处 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) 在 org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:371) 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:238) 在 com.sun.enterprise.v3.services.impl.ContainerMapper $ HttpHandlerCallable.call(ContainerMapper.java:463) 在 com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:168) 在 org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:206) 在 org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:180) 在 org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:242) 在 org.glassfish.grizzly.filterchain.ExecutorResolver $ 9.execute(ExecutorResolver.java:119) 在 org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:284) 在 org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:201) 在 org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:133) 在 org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:112) 在 org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77) 在 org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:539) 在 org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112) 在 org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117) 在 org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access $ 100(WorkerThreadIOStrategy.java:56) 在 org.glassfish.grizzly.strategies.WorkerThreadIOStrategy $ WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137) 在 org.glassfish.grizzly.threadpool.AbstractThreadPool $ Worker.doWork(AbstractThreadPool.java:593) 在 org.glassfish.grizzly.threadpool.AbstractThreadPool $ Worker.run(AbstractThreadPool.java:573) 在java.lang.Thread.run(Thread.java:745)造成原因: java.lang.StackOverflowError在 java.nio.charset.CharsetDecoder。(CharsetDecoder.java:233)在 sun.nio.cs.UTF_8 $ Decoder。(UTF_8.java:84)在 sun.nio.cs.UTF_8 $ Decoder。(UTF_8.java:81)在 sun.nio.cs.UTF_8.newDecoder(UTF_8.java:68)在 java.lang.StringCoding $ StringDecoder。(StringCoding.java:131)在 java.lang.StringCoding $ StringDecoder。(StringCoding.java:122)在 java.lang.StringCoding.decode(StringCoding.java:187)在 java.lang.String。(String.java:426)在 org.postgresql.core.Encoding.decode(Encoding.java:184)位于 org.postgresql.core.PGStream.receiveString(PGStream.java:328)在 org.postgresql.core.v3.QueryExecutorImpl.receiveCommandStatus(QueryExecutorImpl.java:2480) 在 org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2041) 在 org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:288) 在 org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:430) 在org.postgresql.jdbc.PgStatement.execute(PgStatement.java:356)处 org.postgresql.jdbc.PgPreparedStatement.executeWithFlags(PgPreparedStatement.java:168) 在 org.postgresql.jdbc.PgPreparedStatement.executeQuery(PgPreparedStatement.java:116) 在 org.apache.commons.dbcp2.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:82) 在 org.apache.commons.dbcp2.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:82) 在 org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:60) 在 org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.getResultSet(AbstractLoadPlanBasedLoader.java:419) 在 org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.executeQueryStatement(AbstractLoadPlanBasedLoader.java:191) 在 org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.executeLoad(AbstractLoadPlanBasedLoader.java:121) 在 org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.executeLoad(AbstractLoadPlanBasedLoader.java:86) 在 org.hibernate.loader.entity.plan.AbstractLoadPlanBasedEntityLoader.load(AbstractLoadPlanBasedEntityLoader.java:185) 在 org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:4265) 在 org.hibernate.event.internal.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:509) 在 org.hibernate.event.internal.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:479) 在 org.hibernate.event.internal.DefaultLoadEventListener.load(DefaultLoadEventListener.java:220) 在 org.hibernate.event.internal.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:279) 在 org.hibernate.event.internal.DefaultLoadEventListener.doOnLoad(DefaultLoadEventListener.java:122) 在 org.hibernate.event.internal.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:90) 在org.hibernate.internal.SessionImpl.fireLoad(SessionImpl.java:1257) 在 org.hibernate.internal.SessionImpl.internalLoad(SessionImpl.java:1140) 在 org.hibernate.type.EntityType.resolveIdentifier(EntityType.java:682) 在org.hibernate.type.EntityType.resolve(EntityType.java:464)处 org.hibernate.type.ManyToOneType.resolve(ManyToOneType.java:239)位于 org.hibernate.engine.internal.TwoPhaseLoad.doInitializeEntity(TwoPhaseLoad.java:172) 在 org.hibernate.engine.internal.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:129) 在 org.hibernate.loader.plan.exec.process.internal.AbstractRowReader.performTwoPhaseLoad(AbstractRowReader.java:238) 在 org.hibernate.loader.plan.exec.process.internal.AbstractRowReader.finishUp(AbstractRowReader.java:209) 在 org.hibernate.loader.plan.exec.process.internal.ResultSetProcessorImpl.extractResults(ResultSetProcessorImpl.java:133) 在 org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.executeLoad(AbstractLoadPlanBasedLoader.java:122) 在 org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.executeLoad(AbstractLoadPlanBasedLoader.java:86) 在 org.hibernate.loader.collection.plan.AbstractLoadPlanBasedCollectionInitializer.initialize(AbstractLoadPlanBasedCollectionInitializer.java:87) 在 org.hibernate.persister.collection.AbstractCollectionPersister.initialize(AbstractCollectionPersister.java:691) 在 org.hibernate.event.internal.DefaultInitializeCollectionEventListener.onInitializeCollection(DefaultInitializeCollectionEventListener.java:75) 在 org.hibernate.internal.SessionImpl.initializeCollection(SessionImpl.java:2246) 在 org.hibernate.collection.internal.AbstractPersistentCollection $ 4.doWork(AbstractPersistentCollection.java:571) 在 org.hibernate.collection.internal.AbstractPersistentCollection.withTemporarySessionIfNeeded(AbstractPersistentCollection.java:253) 在 org.hibernate.collection.internal.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:567) 在 org.hibernate.collection.internal.AbstractPersistentCollection.read(AbstractPersistentCollection.java:138) 在 org.hibernate.collection.internal.AbstractPersistentCollection $ 1.doWork(AbstractPersistentCollection.java:167) 在 org.hibernate.collection.internal.AbstractPersistentCollection $ 1.doWork(AbstractPersistentCollection.java:152) 在 org.hibernate.collection.internal.AbstractPersistentCollection.withTemporarySessionIfNeeded(AbstractPersistentCollection.java:253) 在 org.hibernate.collection.internal.AbstractPersistentCollection.readSize(AbstractPersistentCollection.java:151) 在 org.hibernate.collection.internal.PersistentBag.size(PersistentBag.java:261) 在 org.modelmapper.internal.converter.IterableConverter.getSourceLength(IterableConverter.java:87) 在 org.modelmapper.internal.converter.IterableConverter.convert(IterableConverter.java:38) 在 org.modelmapper.internal.MappingEngineImpl.convert(MappingEngineImpl.java:336) [.................]
当我删除实体上的收藏集时,这是可行的 有什么问题吗?
谢谢