发送时,实体中的数据为空,但不为null。这怎么可能?

时间:2018-07-12 06:45:47

标签: java database spring hibernate

当我在控制器中获得实体“产品”时,我拥有所有空数据。

@GetMapping("/admin/product/delete")
public ModelAndView showProductDeletePage(
        @RequestParam String productId
){
    Long longId = Long.parseLong(productId);
    Product product = productService.getProductById(longId);

    ModelAndView modelAndView = new ModelAndView("/admin/product/delete");
    modelAndView.addObject("product", product);

    return modelAndView;
}

enter image description here

但是,在字符串中

    modelAndView.addObject("product", product);

我将产品发送到表单。

<div class="w3-container">
    <form th:action="@{'/admin/product/delete?productId=' + ${product.getId()}}" method="post">
    <h2>Delete product</h2>
    <p>If you submit, product will be deleted irrevocably</p>

    <div th:text = "${product.getProductName()}" class="w3-panel w3-card-4"><p>w3-card-4</p>
    </div>
        <a href="/" class="w3-button w3-green">Cancel</a>
        <input class="w3-button w3-red" type="submit" value="Delete"/>
    </form>
</div>

例如,在字符串中

    <div th:text = "${product.getProductName()}" class="w3-panel w3-card-4"><p>w3-card-4</p>
<form th:action="@{'/admin/product/delete?productId=' + ${product.getId()}}" method="post">

我的应用程序没有问题,并正确返回了屏幕数据。

怎么可能?

其中的一个问题是,在其他情况下我无法使用该实体。一般来说-怎么可能??

2 个答案:

答案 0 :(得分:1)

Hibernate使用实体的代理,当前您正在查看代理。代理本身的行为类似于Product,但不包含实际数据。 handler中存在该内容。

如果您点击handler,最终将到达实际的Product实例。

答案 1 :(得分:0)

可能的原因是:

  • 您可能具有不同的连接字符串。
  • 您的Web应用程序未处于运行状态。
  • 您已缓存数据。

您无法用描述问题的方式添加调试器/断点来缩小问题范围。