【问题标题】:Get Max value of a column from DB in Hal-Json using Spring Data REST使用 Spring Data REST 从 Hal-Json 中的 DB 中获取列的最大值
【发布时间】:2015-01-31 02:15:13
【问题描述】:

我有一个 Spring 项目,我使用 Spring Data REST 访问数据库(使用 http://spring.io/guides/gs/accessing-data-rest/

@RepositoryRestResource(collectionResourceRel = "test", path = "test")
public interface TestRepository extends PagingAndSortingRepository<Test, Long> {

    @Query("SELECT max(p.lastUpdatedDate) FROM Test p")
    Date findLastUpdatedDate();
}

当我尝试使用 URL localhost:8080/test/search/findLastUpdatedDate 访问上述方法以获取 MAX 日期时,出现错误

{"cause":null,"message":"Cannot create self link for class java.sql.Timestamp! No persistent entity found!"}

请建议我如何从测试表中获取最大 lastUpdatedDate。谢谢!

这是我的测试类:

@Entity
@Table(name="test")
public class Test implements Serializable{

  private static final long serialVersionUID = 1L;

  @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  private Long id;
  private String col1;
  private String col2;
  private String status;

  @Column(name = "last_updated_date")
  private Date lastUpdatedDate;

  // getters, setters, hashcode, equals, toString methods are written
}

【问题讨论】:

  • 你真的需要从存储库中返回一个日期类型吗?如果您返回 Test 类型并仅读取其 lastUpdatedDate ,则可能会避免该错误
  • 我需要存储库中的 Date 类型(我们在运行 select max(last_updated_date) from Test 时得到的输出:类似于 2014-11-20)。我试图从存储库返回一个测试类型,因为有超过 1 行的最大日期为 2014-11-20,最终返回一个 List 类型。但我想要的只是 MAX 日期。必须有一种更简单的方法来从存储库中获取日期......不知道为什么 HAL-JSON 自我链接会给出这个问题。我在 SO 中环顾四周,但没有运气......

标签: spring-data-jpa spring-data-rest spring-hateoas


【解决方案1】:

您需要在日期上使用@Temporal 注释。

您还应该使用 java.util.Date 或 Joda 时间而不是 java.sql.Timestamp

Spring Data JPA 还具有内置的创建/修改时间戳,因此您应该研究一下:

http://docs.spring.io/spring-data/jpa/docs/current/reference/html/#auditing

【讨论】:

  • 感谢您的回答!当我将其更改为 JODA 日期时,这是我得到的错误: {"cause":null,"message":"Cannot create self link for class org.joda.time.LocalDate! No persistent entity found!"} 这个错误还显示了我何时让存储库返回 String 对象而不是 Test 对象。所以看起来 Hal-Json 无法创建自我链接。
猜你喜欢
  • 2016-10-24
  • 1970-01-01
  • 2015-05-30
  • 2014-05-05
  • 1970-01-01
  • 2021-01-14
  • 2016-12-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多