- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在多对多关系中进行查询。结果是一个对我来说毫无意义的大 Json 和 spring 控制台中的错误。
我不知道为什么会这样。我在教程的指导下建立了多对多关系。
这是存储库
public interface ProductJpaRepository extends JpaRepository<Customer, Long> {
@Query(value = "select p from Product p where p.productoId = ?1")
Product findByProductId(Long productId);
List<Customer> findBycustomerId(Long customerId);
}
这是产品
...
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="PRODUCTO_ID")
private long productoId;
private String name;
private Long price;
@ManyToMany(mappedBy = "products")
private Set<Customer> customers = new HashSet<>();
...
这是客户
...
@Id
@GeneratedValue
private Long customerId;
private String name;
private String email;
@ManyToMany(cascade = {CascadeType.ALL})
@JoinTable(
name= "PRODUCTS_BY_CUSTOMER",
joinColumns = { @JoinColumn(name = "CUSTOMER_CUSTOMER_ID")},
inverseJoinColumns = { @JoinColumn(name = "PRODUCT_PRODUCTO_ID")}
)
Set<Product> products = new HashSet<>();
...
这是 Controller
...
@GetMapping(value = "productsList/{productId}")
public Product findByProductId(@PathVariable final Long productId){
return productJpaRepository.findByProductId(productId);
}
...
这是我在浏览器中输入的结果 http://localhost:8180/products/productsList/3 .这个结果扩展了很多,我只贴了一部分,其余的都是一样的
{
"productoId":3,
"name":"Producto C",
"price":4000,
"customers": [
{
"customerId":1,
"name":"Carlos Rodriguez",
"email":"carlosr@beitch.com",
"products":[
{
"productoId":3,
"name":"Producto C",
"price":4000,
"customers":[
{
"customerId":1,
"name":"Carlos Rodriguez",
"email":"carlosr@beitch.com",
"products":[
{
"productoId":3,
"name":"Producto C",
"price":4000,
"customers":[
{
"customerId":1,
"name":"Carlos Rodriguez",
"email":"carlosr@beitch.com"
....
最后这是控制台中的错误
2017-10-29 20:17:05.458 ERROR 1640 --- [nio-8180-exec-1] o.a.c.c.C.[Tomcat].[localhost] : Exception Processing ErrorPage[errorCode=0, location=/error]
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.IllegalStateException: getOutputStream() has already been called for this response
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:982) ~[spring-webmvc-4.3.12.RELEASE.jar:4.3.12.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861) ~[spring-webmvc-4.3.12.RELEASE.jar:4.3.12.RELEASE]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:635) ~[tomcat-embed-core-8.5.23.jar:8.5.23]
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) ~[spring-webmvc-4.3.12.RELEASE.jar:4.3.12.RELEASE]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) ~[tomcat-embed-core-8.5.23.jar:8.5.23]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) ~[tomcat-embed-core-8.5.23.jar:8.5.23]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-8.5.23.jar:8.5.23]
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99) ~[spring-web-4.3.12.RELEASE.jar:4.3.12.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-4.3.12.RELEASE.jar:4.3.12.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-8.5.23.jar:8.5.23]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-8.5.23.jar:8.5.23]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) ~[spring-web-4.3.12.RELEASE.jar:4.3.12.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-8.5.23.jar:8.5.23]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-8.5.23.jar:8.5.23]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) ~[spring-web-4.3.12.RELEASE.jar:4.3.12.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-8.5.23.jar:8.5.23]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-8.5.23.jar:8.5.23]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) ~[spring-web-4.3.12.RELEASE.jar:4.3.12.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-8.5.23.jar:8.5.23]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-8.5.23.jar:8.5.23]
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:728) ~[tomcat-embed-core-8.5.23.jar:8.5.23]
at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:590) ~[tomcat-embed-core-8.5.23.jar:8.5.23]
at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:524) ~[tomcat-embed-core-8.5.23.jar:8.5.23]
at org.apache.catalina.core.StandardHostValve.custom(StandardHostValve.java:389) [tomcat-embed-core-8.5.23.jar:8.5.23]
at org.apache.catalina.core.StandardHostValve.status(StandardHostValve.java:254) [tomcat-embed-core-8.5.23.jar:8.5.23]
at org.apache.catalina.core.StandardHostValve.throwable(StandardHostValve.java:349) [tomcat-embed-core-8.5.23.jar:8.5.23]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:175) [tomcat-embed-core-8.5.23.jar:8.5.23]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81) [tomcat-embed-core-8.5.23.jar:8.5.23]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) [tomcat-embed-core-8.5.23.jar:8.5.23]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) [tomcat-embed-core-8.5.23.jar:8.5.23]
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803) [tomcat-embed-core-8.5.23.jar:8.5.23]
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) [tomcat-embed-core-8.5.23.jar:8.5.23]
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868) [tomcat-embed-core-8.5.23.jar:8.5.23]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459) [tomcat-embed-core-8.5.23.jar:8.5.23]
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-embed-core-8.5.23.jar:8.5.23]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_131]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_131]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-8.5.23.jar:8.5.23]
at java.lang.Thread.run(Thread.java:748) [na:1.8.0_131]
Caused by: java.lang.IllegalStateException: getOutputStream() has already been called for this response
at org.apache.catalina.connector.Response.getWriter(Response.java:625) ~[tomcat-embed-core-8.5.23.jar:8.5.23]
at org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:211) ~[tomcat-embed-core-8.5.23.jar:8.5.23]
at javax.servlet.ServletResponseWrapper.getWriter(ServletResponseWrapper.java:109) ~[tomcat-embed-core-8.5.23.jar:8.5.23]
at org.springframework.boot.autoconfigure.web.ErrorMvcAutoConfiguration$SpelView.render(ErrorMvcAutoConfiguration.java:227) ~[spring-boot-autoconfigure-1.5.8.RELEASE.jar:1.5.8.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1286) ~[spring-webmvc-4.3.12.RELEASE.jar:4.3.12.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1041) ~[spring-webmvc-4.3.12.RELEASE.jar:4.3.12.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:984) ~[spring-webmvc-4.3.12.RELEASE.jar:4.3.12.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901) ~[spring-webmvc-4.3.12.RELEASE.jar:4.3.12.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) ~[spring-webmvc-4.3.12.RELEASE.jar:4.3.12.RELEASE]
最佳答案
您的 Product
实体中有 Customer
的组合,反之亦然。
您收到此错误是因为在将您的实体 Product
转换为 JSON
时正在进行无休止的序列化。
试试吧
JsonIgnore
Product
实体中的customers
。
不是序列化完整的 Product
对象,而是创建一个 DTO 类 ProductDto
,它只包含您在客户端需要的字段。
@GetMapping(value = "productsList/{productId}")
public ProductDto findByProductId(@PathVariable final Long productId){
Product product = productJpaRepository.findByProductId(productId);
...
//get required properties from product and set in the ProductDto object
return productDto;
}
关于json - getOutputStream() 已经被称为 spring boot,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47007066/
我的 Controller 中有这个方法。 Whick 基本上呈现 pdf 文件。 def getUserInvoiceImage (GetInvoiceDataCommand form) {
我用谷歌搜索错误消息 getOutputStream() has already been called for this response很多人说这是因为 ,但在我的代码中,没有空格或换行符。我在
我用谷歌搜索错误消息 getOutputStream() has already been called for this response很多人说这是因为 ,但在我的代码中,没有空格或换行符。我在
这个问题已经有答案了: java.lang.IllegalStateException: getOutputStream() has already been called for this resp
我正在使用 Spring 开发一个项目,我遇到了这个问题,我用谷歌搜索了错误消息,我确实找到了解决方案,甚至所有关于这个问题的 SO 帖子也是如此 java.lang.IllegalStateExce
你好,当我尝试在程序的连接方法中使用这两行代码时,出现错误“找不到符号方法 getOutputStream()” 我不知道我做错了什么,这是代码 socket = new ServerSocket(6
我用谷歌搜索错误信息 getOutputStream() has already been called for this response很多人说是因为 ,但在我的代码中,没有空格或换行符。我在li
我正在编写一个 java 代码来将 POST 请求发送到 URL,但它卡在粗体指示的行上。我在 Android 模拟器上运行这个 URL url = new URL("htt HttpURLConne
来自此链接“Writing to the OutputStream of Java Process/ProcessBuilder as pipe”并进行研究,我没有找到指定从 getOutputStr
我正在使用 jssc 库通过串行端口与设备进行通信。在标准 java SerialComm 库中有两个方法 getInputStream() 和 getOutputStream()。 为什么我需要这个
我正在尝试构建将数据发布到node.js服务器的java应用程序。 在 Node.js 中处理帖子的代码如下: app.post('/login.html', function (req, res)
我有一个想要测试的servlet。我想测试 Mockito 的 doGet。在来自 srvlet 的主代码信息中,通过 PrintWriter 转到页面/json。在我的测试中,我想要一个包含测试信息
我正在为我们的 Android 设备创建一个应用程序。本节的目的是将用户名和密码(当前仅分配为字符串)发布到 Web 服务并接收登录 token 。当运行代码时,在 getOutputStream()
我正在尝试从 MySQL-DB 下载 pdf(我将其作为 Blob 获取,到目前为止一切正常。但是当我尝试让 ServletOutputstream 将其发送到客户端时,程序崩溃。 AFAIK 当该方
所以我从 GUI 启动 Bukkit (Minecraft) 服务器。 ProcessBuilder builder = new ProcessBuilder(); builder.redirectE
我在 Windows 机器上使用 gzip 实用程序。我压缩了一个文件并作为 blob 存储在数据库中。当我想使用 gzip 实用程序解压缩此文件时,我将此字节流写入 process.getOutpu
我知道还有许多其他帖子处理同样的错误,但所有这些帖子要么是关于 JSP/GSP 页面的,要么是出于任何其他原因,对我的情况不是很有帮助。我将 Spring MVC 与 Thymeleaf 一起使用。以
一个问题 以为例 DataOutputStream output= new DataOutputStream(clientSocket.getOutputStream()) ; 或 DataInput
我正在使用 Spring @RestController 并以 Json 格式发送响应。这工作正常,但我需要向记录器发送响应,所以我已经实现了 Spring 的 HandlerInterceptor
Socket socket = sslSocketFactory.createSocket(); socket.connect(new InetSocketAddress(hostname, port
我是一名优秀的程序员,十分优秀!