使用 Hibernate Spatial 访问 Spring NVC 的坐标 z 值

Accessing z-value of Coordinates for Spring NVC with Hibernate Spatial

我有一个正在构建的 Spring MVC 应用程序,它使用包含 3D 几何图形的 Oracle Spatial 数据库。我正在使用 Hibernate Spatial 来访问它,但由于我是 Spring 的新手(并且相对较新 Java),我发现很难访问我的视图的 z 坐标。代码如下:

Deposit.java

package com.example.project.model;

 import com.vividsolutions.jts.geom.Point
 import ...

@Entity
@Table(name="DEPOSITS")
public class Deposit {

  @Id
  @Column(name = "ID")
  private int id;

  @Column(name = "NAME")
  private String name;

  @Column(name = "GEOM",updatable = false)
  @Type(type="org.hibernate.spatial.GeometryType")
  private Point geometry;

  public Point getGeometry() {
    return geometry;
  }
}

DepositController.java

package com.example.project;

import ...

@Controller
public class DepositController {
  private DepositService depositService;

  @Autowired(required = true)
  @Qualifier(value = "depositService")
  public void setDepositService(DepositService ds) { 
    this.depositService = ds;
  }

  //Index
  @RequestMapping(value = "/deposits", method = RequestMethod.GET)
  public String listDeposits(Model model) {
    model.addAttribute("listDeposits", this.depositService.listDeposits());
    return "deposits/index";
  }
}

deposits/index.jsp

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
<%@ page session="false" %>
<html>
  <head>
    <title>Deposits Page</title>
  </head>
  <body>
    <c:if test="${!empty listDeposits}">
      <table>
        <tr>
          <th>Deposit ID</th>
          <th>Deposit Name</th>
          <th>Longitude</th>
          <th>Latitude</th>
          <th>Height</th>
        </tr>
        <c:forEach items="${listDeposits}" var="deposit">
          <tr>
            <td>${deposit.id}</td>
            <td>${deposit.name}</td>
            <td>${deposit.geometry.x}</td>
            <td>${deposit.geometry.y}</td>
            <td>${deposit.geometry.coordinate.z}</td>
          </tr>
        </c:forEach>
      </table>
    </c:if>
  </body>
</html>

我知道 JTS 的 Point 类型不公开 z 坐标,它可以通过坐标对象访问。代码 deposit.getGeometry().getCoordinates().z 有效,如何让它适用于我的 .jsp 视图?

谢谢

我怀疑 ${deposit.geometry.x} 正在被重写为 deposit.getGeometry().getX() 并且 getX() 是 class 上存在的一个方法,所以它有效。

同样,${deposit.geometry.coordinate.z}会被重写为deposit.getGeometry().getCoordinate().getZ(),这不是一个存在的方法。

我只是将 X、Y 和 Z 的吸气剂添加到存款中 class,然后使用

${deposit.x}
${deposit.y}
${deposit.z}